La fenêtre principale de mon application contient un UITabBarController basé sur xib (entièrement configuré dans Interface Builder) qui peut également être présenté de manière modale (comme la vue modale Music.app "Ajouter des morceaux à la playlist") . UITabBarController contient un certain nombre de UINavigationControllers qui à leur tour contiennent des UITableViewControllers sous-classés. Voici comment je détecte actuellement si le UITableViewController est présentée sous-classé dans un UITabBarController modal:Déterminer si un UIViewController est présenté de manière modale
- (void)viewDidLoad {
[super viewDidLoad];
self.isModal = NO;
UIViewController *child = self;
UIViewController *parent = self.parentViewController;
while (parent) {
if (parent.modalViewController && parent.modalViewController == child) {
self.isModal = YES;
break;
}
child = parent;
parent = parent.parentViewController;
}
if (self.isModal) {
// modal additions, eg. Done button, navigationItem.prompt
}
else {
// normal additions, eg. Now Playing button
}
}
Est-il possible de le faire qui n'implique pas marcher l'arbre parentViewController ou sous-classement toute la vue intermédiaire les contrôleurs de transmettre l'état isModal lorsqu'ils sont initialisés?
Coulée en sous-classe. Cela semble gênant. Pourquoi sous-classe? Pourquoi ne pas ajouter une catégorie à UITabBarController qui contient isModal? –