Comment faire la popover de UIsplitview visible en mode portrait iPad
-
26-09-2019 - |
Question
Je voudrais faire popover voir visibles lorsque l'utilisateur passe de la vue du paysage à la vue portrait dans UIsplitView de l'iPad. Bien que l'utilisateur peut le rendre visible en cliquant sur le bouton de la barre mais je veux que ce soit automatisé pour le mode portrait.
La solution
Inside - Méthode « (BOOL) de shouldAutorotateToInterfaceOrientation », pour vérifier le dispositif orientation.If il est portrait, puis Présentez popover comme vous le faites pour le rendre visible lorsque le bouton de la barre utilisateur clique
.Bonne chance.
Autres conseils
UISplitViewController envoie des messages à son délégué (UISplitViewControllerDelegate). Vous pouvez mettre en œuvre ces méthodes de délégués pour montrer la popover. Vous pouvez faire quelque chose comme ça dans votre code « 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;
}
La réponse acceptée (en utilisant shouldAutorotateToInterfaceOrientation
) ne fonctionne pas pour moi. Il a soit des artefacts de rotation (dans 4,2 et 5,0 iPad simulateurs) ou seulement des spectacles au démarrage et plus jamais dans les rotations ultérieures (le simulateur 4.3). Ce que je faisais la place était 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 cela dans - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
et - (void)viewDidLoad
pour gérer aussi au démarrage.