2009-07-01 12 views
2

J'ai été en train d'apprendre à construire des applications iPhone pour les deux dernières semaines. J'ai eu beaucoup de contenu, et maintenant j'essaie de créer une pop modale avec presentModalView.Comment utiliser Interface Builder pour contrôler UINavigationControllers correctement?

Je peux réussir à créer et à faire glisser une vue, mais je remarque que les vues modales ne vous fournissent pas de barre de navigation par défaut en haut de la fenêtre, ce qui est logique pour la flexibilité. La plupart des vues modales que j'ai vues ont un bouton "Annuler" et un bouton "Terminé" ou "Enregistrer" comme éléments de navigation sur ce qui semble être un UINavigationController. Ma pensée était alors simplement d'instancier un contrôleur de navigation et de pousser la vue unique sur la pile du contrôleur de vue, et de présenter ModalView: navController.view ...

Parce que la vue est relativement complexe, j'essayais de disposer à la fois le UINavigationController , avec les boutons de la barre, et la vue que j'espérais pousser sur la pile dans un seul xib - peu importe ce que j'essaie, je n'arrive pas à obtenir les liens corrects. Pouvez-vous même faire cela? Ou devrais-je créer une classe/xib séparée pour la vue que je vais pousser sur le contrôleur de navigation? On dirait que beaucoup de classes et de fichiers pour un écran, donc mon sentiment est que je dois manquer quelque chose.

À ce stade, j'aurais pu le faire par programmation il y a environ une heure et demie ... cependant, c'est un vrai bourrin, puisque IB semble GRAND pour certaines choses. Quelqu'un a une expérience avec une situation comme celle-ci?

Merci, Josh

Répondre

1

Si vous ne comptez pas utiliser cette nouvelle pour la navigation XIB, il n'y a pas de point à faire un contrôleur de navigation.

Dans le générateur d'interface, faites simplement glisser un UINavigationBar en haut de votre vue et ajoutez un bouton "Terminé". Maintenant, ajoutez un IBAction au bouton fait pour fermer le contrôleur de vue. Votre code ViewController pour le rejet IBAction devrait ressembler à ceci:

-(IBAction)dismiss { 
    //Any logic before dismissing the modal view 
    [super dismissModalViewControllerAnimated:YES]; 
} 
+0

Ah - duh! Merci. Je suppose que depuis que j'ai commencé avec le concept de contrôleur de navigation coincé dans ma tête, cela avait plus de sens. La seule chose que je vais faire est d'essayer et d'adhérer au modèle que le contrôleur de vue qui a présenté la vue modale devrait le rejeter. Ainsi, au lieu d'utiliser un IBAction direct, je vais implémenter un protocole et utiliser un délégué (le parent) pour appeler rejeter. Je ne sais pas pourquoi, mais Apple dit que c'est la meilleure pratique ... – Josh

Questions connexes