0

J'essaie de trouver la meilleure façon de refactoriser cela. En ce moment, chacun des contrôleurs de vue (environ 20 d'entre eux) ont une fonction qui initialise le contenu de la barre d'outils/barre de navigation comme si par exemple,refactoring code similaire ciblé à la barre de navigation de tous les contrôleurs de vue

- (void) toolbarInit

et sur chacun des contrôleur de viewDidLoad, vous verrez que la fonction s'appelle ie, [self toolbarInit];

Fondamentalement, ce que toolbarInit fait est de mettre un loginButton sur rightBarButtonItem de la barre de navigation.

Devrait-on:

a. placez la barre d'outils/barre de navigation dans le délégué de l'application (est-il possible d'initialiser chaque barre de navigation du contrôleur de vue, quelle que soit la profondeur de la pile?)

b. créer un toolbarController ou quelque chose et juste mettre tout le code d'installation/code de connexion là-bas?

Un grand merci pour toute autre suggestion.

+0

Ai-je répondu à votre question complètement? Si oui, veuillez le marquer comme accepté. – Justin

Répondre

1

Je considère une de ces options:

  • On dirait que vous poussez à plusieurs reprises les UIViewControllers identiques ou similaires sur la pile. Est-il possible qu'ils doivent tous dériver de la même sous-classe UIViewController? Si c'est le cas, l'initialisation pourrait avoir lieu dans une super-classe partagée par l'ensemble des quelque 20 éléments de la pile. Si les contrôleurs de vue ont des superclasses différentes, envisagez de définir une catégorie sur UIViewController qui gère l'instanciation et l'ajout de vos boutons. Ensuite, vous devez seulement importer l'en-tête et appeler le même [self toolbarInit] en viewDidLoad. Comme ci-dessus, excepté au lieu d'utiliser une catégorie, créez une classe autonome pour gérer la configuration comme ceci. La logique dans toolbarInit pourrait être bloquée dans une méthode de classe comme setupNavigationItem:.

Questions connexes