2009-04-29 5 views
8

Cela peut être une question stupide, mais est-il possible de garder un droit UIBarButtonItem sur plusieurs vues gérées par un UINavigationController? J'ai une progression des vues qui partagent souvent le même droit UIBarButtonItem, mais quand je pousse une nouvelle vue à mon UINavigationController, je dois redéfinir le bouton à chaque fois, même si cela n'a pas changé. La plupart du temps, l'animation transitionnelle perceptible d'une vue à l'autre est ce qui me dérange parce que le même bouton disparaît brièvement puis revient, ce qui est inutile puisqu'il n'y a pas de changement visuel réel. Devrais-je envisager d'ajouter un UIButton en tant que sous-vue de mon UINavigationBar et d'effectuer un effet "bouton de droite" de cette façon?Propriété rightBarButtonItem persistante de UINavigationItem

Répondre

14

Nous l'avons fait dans notre application. Nous avons créé un seul UIBarButtonItem que nous passons d'un UIViewController à un autre lorsque l'utilisateur navigue. L'astuce consistait à utiliser UINavigationControllerDelegate, la méthode navigationController: willShowViewController: animated:. Nous avons défini le rightBarButtonItem du UIViewController sortant sur nil et le rightBarButtonItem du contrôleur entrant sur votre bouton. C'est une douleur à gérer, mais ça fonctionne.

+0

Génial! Je vous remercie. J'ai oublié d'enquêter sur UINavigationControllerDelegate. – LucasTizma

+0

Merci! A travaillé pour moi !! :) –

+0

Hey, comment puis-je obtenir le contrôleur sortant UIView? il semble que je ne peux obtenir que celui qui sera présenté, mais pas l'actuel? acclamations – zanona

1

UIBarButtonItems peut être créé en tant qu'instances autonomes dans un fichier nib/xib. S'il n'y a rien de spécial qui vous empêche de construire le bouton dans le constructeur Interface, vous devriez le connecter à la propriété rightBarButtonItem de UINavigationItem pour chaque contrôleur de vue qui doit réutiliser le bouton. Aucun objectif c nécessaire.

+0

Salut Matt, Pouvez-vous être plus précis avec l'exemple - Je crois que c'est l'implémentation dans l'exemple de code NavBar.xcode, mais j'ai du mal à le suivre tout au long. (BTW - J'ai voté pour votre réponse car je pense que c'est à la fois correct et la solution plus élégante.) – mobibob

Questions connexes