Come rendere popover di UIsplitview visibile in modalità verticale iPad
-
26-09-2019 - |
Domanda
Mi piacerebbe fare popover visualizzare visibili ogni volta utente passa dalla visualizzazione orizzontale a quella verticale in UIsplitView di iPad. Anche se l'utente può renderla visibile facendo clic sul pulsante della barra ma voglio questo per essere automatizzato per la modalità portrait.
Soluzione
All'interno - il metodo "(BOOL) shouldAutorotateToInterfaceOrientation", assegno per il dispositivo orientation.If è ritratto, quindi presentarli popover come si fa per averlo reso visibile quando il pulsante utente fa clic bar
.Tutto il meglio.
Altri suggerimenti
UISplitViewController invia messaggi a un suo delegato (UISplitViewControllerDelegate). È possibile implementare questa metodi delegato per mostrare la popover. Si può fare qualcosa di simile nel codice "Particolare del regolatore":
#pragma mark -
#pragma mark UISplitViewControllerDelegate implementation
- (void)splitViewController:(UISplitViewController*)svc
willHideViewController:(UIViewController *)aViewController
withBarButtonItem:(UIBarButtonItem*)barButtonItem
forPopoverController:(UIPopoverController*)pc
{
[barButtonItem setTitle:@"Your 'popover button' title"];
self.navigationItem.leftBarButtonItem = barButtonItem;
}
- (void)splitViewController:(UISplitViewController*)svc
willShowViewController:(UIViewController *)aViewController
invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
self.navigationItem.leftBarButtonItem = nil;
}
La risposta accettata (usando shouldAutorotateToInterfaceOrientation
) non funziona per me. Esso ha o artefatti di rotazione (nel iPad simulatori 4.2 e 5.0) o mostra solo all'avvio e mai più di rotazioni successive (il simulatore 4.3). Quello che ho fatto invece era quello di creare un po 'di funzione di supporto:
- (void)showPopoverInPortrait {
if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait) {
[self.masterPopoverController presentPopoverFromBarButtonItem:self.navigationItem.leftBarButtonItem
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
}
}
e chiamare questo all'interno - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
e - (void)viewDidLoad
per gestire anche all'avvio.