Wie machen UIsplitview des popover sichtbar im Portrait-Modus iPad
-
26-09-2019 - |
Frage
würde ich gerne machen popover sichtbar anzuzeigen, wenn Benutzer wechselt von Landschaft in das Hochformat in UIsplitView von iPad. Obwohl Benutzer können durch Klicken auf Bar-Taste sichtbar machen, aber ich mag die für Portrait-Modus automatisiert werden.
Lösung
Inside „- (BOOL) ShouldAutorotateToInterfaceOrientation“ Methode, die Prüfung für das Gerät orientation.If es Porträt ist, präsentiert dann die popover wie Sie für die es sichtbar, wenn Benutzer klickt bar Taste
.Alles Gute.
Andere Tipps
UISplitViewController sendet Nachrichten an seinen Vertreter (UISplitViewControllerDelegate). Sie können diese Delegatmethoden implementieren die popover zu zeigen. Sie können in Ihrem "Detail-Controller" Code so etwas tun:
#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;
}
Die akzeptierte Antwort (mit shouldAutorotateToInterfaceOrientation
) nicht für mich arbeiten. Es hat entweder Rotation Artefakte (in 4.2 und 5.0 iPad Simulatoren) oder zeigt nur beim Start und nie wieder in der nachfolgenden Umdrehungen (der 4.3-Simulator). Was ich tat, war stattdessen eine kleine Hilfsfunktion zu erstellen:
- (void)showPopoverInPortrait {
if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait) {
[self.masterPopoverController presentPopoverFromBarButtonItem:self.navigationItem.leftBarButtonItem
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
}
}
und nenne dies innerhalb - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
und - (void)viewDidLoad
auch beim Start zu behandeln.