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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top