Propriété rightBarButtonItem persistante de UINavigationItem
-
03-07-2019 - |
Question
C'est 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 de vues qui partagent souvent le même droit UIBarButtonItem
, mais lorsque je pousse une nouvelle vue sur mon UINavigationController
, je dois redéfinir le bouton à chaque fois, même si ça n'a pas changé. Généralement, l'animation de transition notable d'une vue à l'autre est ce qui me dérange, car le même bouton disparaît brièvement puis réapparaît, ce qui est inutile car il n'y a pas de changement visuel réel. Devrais-je simplement envisager d'ajouter un UIButton
en tant que sous-vue de mon UINavigationBar
et de réaliser un "bouton de barre droit" " effectuer de cette façon?
La solution
Nous l'avons fait dans notre application. Nous avons créé un seul UIBarButtonItem que nous échangeons d'un UIViewController à un autre lorsque l'utilisateur navigue. L'astuce consistait à utiliser UINavigationControllerDelegate, la méthode navigationController: willShowViewController: animated:. Nous définissons rightBarButtonItem UIViewController sortant sur nil et rightBarButtonItem du contrôleur entrant sur votre bouton. C'est difficile à gérer, mais cela fonctionne.
Autres conseils
UIBarButtonItems peut être créé en tant qu’instance autonome dans un fichier nib / xib. Si rien d’exceptionnel ne vous empêche de construire le bouton dans le générateur Interface, vous devez le connecter à la propriété rightBarButtonItem de UINavigationItem pour chaque contrôleur de vue devant réutiliser le bouton. Aucun objectif c requis.