Comment créer un popover dans un Storyboard iPad pour une application iOS 5.0+?
Il existe déjà une configuration avec le modèle de projet Xcode (application utilitaire), mais je n'arrive pas à comprendre comment Apple l'a fait fonctionner. J'ai essayé de l'imiter, mais je n'ai eu que des erreurs. J'ai même regardé sur le site de développement d'Apple, mais je n'ai obtenu que du code obsolète qui entraînait des avertissements et des erreurs de construction.
J'ai une CBMainView
et une CBMasterView
(à l'exception de la vue principale déjà incluse), et une UIToolbar
avec une UIToolbarButton
. J'ai besoin de l'utilisateur pour appuyer sur le bouton sur la UIToolbar
, et en haut vient mon 320x300 Popover (CBMasterView
).
Comment puis-je faire cela avec Xcode Storyboards? Des tutoriels, des réponses, du code ou des liens sont tous appréciés!
Avant iOS 5, il aurait fallu afficher un autre UIViewController
en utilisant le premier répondant via une présentation modale (et une pile de code).
Pour créer un popover en mode Storyboard de Xcode (iOS 5+), utilisez UIButton
ou UIToolbarButton
et créez un scénario de storyboard entre le bouton et le UIViewController
que vous voulez passer au dessus.
Créer une transition entre un bouton et un autre UIViewController
est simple. Voici comment:
UIViewController
de votre choix. Vous devriez voir apparaître une ligne bleu clair qui va du bouton à la pointe de la souris.Après avoir fait glisser la ligne bleue vers le ViewController choisi, un petit menu noir apparaîtra. Ce menu affiche les différentes options de classement. Sélectionnez Popover
name__.
Si tout a été fait correctement, cette séquence devrait être visible dans l'inspecteur de connexions lorsque le bouton est sélectionné:
La UIViewController
que vous créez doit également avoir une taille personnalisée plus petite que celle du plein écran. Vous pouvez définir une taille personnalisée en sélectionnant le contrôleur de vue et en définissant sa propriété size sur freeform
ou master
(320 x 850).
Je cherche aussi la réponse à ce problème. Je l'ai résolu en utilisant NSNotification.
Voici comment:
Le contrôleur de vue qui affiche la fenêtre contextuelle doit s’inscrire pour recevoir la notification:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(languageSetup) name:SPVWChangeLanguage object:nil];
languageSetup
est la fonction qui sera appelée, SPVWChangeLanguage
est une chaîne que vous définissez dans votre contrôleur de vue contextuel.
J'ai ajouté cette ligne dans viewDidAppear
Maintenant, dans votre contrôleur de vue popup, ajoutez cette ligne lorsque l'utilisateur sélectionne quelque chose dans le tableau:
[[NSNotificationCenter defaultCenter] postNotification: [NSNotification notificationWithName: SPVWChangeLanguage object:self]];
avant de rejeter le popup:
[self.popOverController dismissPopoverAnimated:YES];
C'est tout. Le sélecteur languageSetup (dans mon cas) sera appelé. Assurez-vous de supprimer la notification lorsque votre contrôleur de vue s'en va:
[[NSNotificationCenter defaultCenter] removeObserver:self];
Je le fais dans viewWillDisappear
Je pense qu'il doit y avoir un moyen plus facile. Mais au moins, celui-ci fonctionne pour moi.
Si vous utilisez le story-board avec IOS8, jetez un coup d'œil à ce message, répondez-le pour moi!
Comment présenter un modal au sommet de la vue actuelle dans Swift
En bref: vous créez une vue contextuelle distincte, attribuez une couleur avec une opacité faible (ou nulle) à l'arrière-plan et vous vous connectez à partir de votre vue principale à la vue contextuelle, avec une séquence modale.
Ensuite, dans le storyboard, cliquez sur la séquence, puis dans l'inspecteur d'attributs: changez la présentation en "contexte actuel" (et peut-être un passage en mode de dissolution croisée, si vous utilisez une opacité supérieure à 0)
Le moyen le plus simple que j'ai vu jusqu'à présent!