5 votes

Comment rendre le popover de UIsplitview visible sur l'iPad en mode portrait ?

Je voudrais rendre la vue popover visible lorsque l'utilisateur passe de la vue paysage à la vue portrait dans UIsplitView de l'iPad. Bien que l'utilisateur puisse la rendre visible en cliquant sur le bouton de la barre, je veux que cela soit automatisé pour le mode portrait.

4voto

GopiKrishnAn Points 196

Dans la méthode " -(BOOL) shouldAutorotateToInterfaceOrientation", vérifiez l'orientation du dispositif. S'il s'agit d'un portrait, présentez le popover comme vous le faites pour le rendre visible lorsque l'utilisateur clique sur le bouton de la barre.

Tous les meilleurs.

2voto

Ricardo Valeriano Points 1900

UISplitViewController envoie des messages à son délégué (UISplitViewControllerDelegate). Vous pouvez implémenter les méthodes de ce délégué pour afficher le popover. Vous pouvez faire quelque chose comme ceci dans votre code de "contrôleur de détail" :

#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;
}

1voto

qix Points 776

La réponse acceptée (en utilisant shouldAutorotateToInterfaceOrientation ) ne fonctionne pas pour moi. Soit il y a des artefacts de rotation (dans les simulateurs d'iPad 4.2 et 5.0), soit il ne s'affiche qu'au démarrage et jamais plus lors des rotations suivantes (le simulateur 4.3). Ce que j'ai fait à la place, c'est de créer une petite fonction d'aide :

- (void)showPopoverInPortrait {
    if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait) {
        [self.masterPopoverController presentPopoverFromBarButtonItem:self.navigationItem.leftBarButtonItem
                                             permittedArrowDirections:UIPopoverArrowDirectionAny 
                                                             animated:YES];
    }
}

et appeler ceci dans - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation y - (void)viewDidLoad à gérer également au démarrage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X