Je construis un UINavigationController personnalisé (Ne le sous-classe pas, je sous-classe UIViewController pour cela), je voudrais avoir les instances de UIViewController qui sont ajoutées à mon custom navigationController pour obtenir une référence au contrôleur de navigation personnalisé quand elles accèdent .navigationController. I.e.Modification de la valeur self.navigationController de UIViewControllers?
que vous, d'un UIViewController qui appartiennent à un UINavigationController, faire pousser un nouveau contrôleur de vue de la pile:
MyViewController *myVC = [[MyViewController alloc] init];
[self.navigationController pushViewController:myVC animated:YES];
[myVC release];
je voudrais imiter ce comportement. De préférence par un motif de conception qui n'implique pas l'ajout de code au UIViewController lui-même. Ainsi, dans le cas ci-dessus, lorsque le contrôleur de navigation personnalisé est poussé vers un contrôleur, la commande pushViewController règle le contrôle navigationController sur le contrôleur personnalisé (lui-même), de sorte que le contrôleur de vue nouvellement ajouté .navigationController obtiendra également une référence au contrôleur de nav personnalisé.
Il y a quelques pièges impliqués. Même si viewController ajouté est affiché par le contrôleur de navigation personnalisé, le [self parentViewController]
ne fonctionne pas lors du sous-classement UIViewController
. Si elle l'a fait, je pouvais aller
[[self parentViewController] pushViewController...
à partir de mon ajoutée UIViewController
.
Le self.navigationController
est en lecture seule, donc je ne peux pas le configurer manuellement et même si je le pouvais, je devrais le mettre à [self parentViewController]
que je ne peux pas obtenir.
J'avais prévu de construire une catégorie sur le UIViewController (mon projet n'utilisera que le custom navigationController, donc pas de risque de collision). Mais son approche se heurte au problème mentionné ci-dessus, je n'ai aucun moyen d'obtenir une référence au Custom UINavigationController possédant le UIViewController poussé, à partir de ces contrôleurs ajoutés. Je devrais construire des protocoles et définir le CustomNavigationController en tant que délégué sur chacun des UIViewControllers, en le couplant ainsi fortement et en faisant que ces UIViewControllers fonctionnent seulement avec mon contrôleur de Nav personnalisé.
J'espère que ce que j'essaie de réaliser est clair, j'ai besoin de plus d'expérience en conception de modèle dans l'objectif C pour voir celui-ci par moi-même.
Merci pour toute aide/conseillent donné :)