La ventana principal de mi aplicación contiene un UITabBarController basado en xib (completamente configurado en Interface Builder) que también se puede presentar de forma modal (al igual que la vista modal de Music.app "Agregar canciones a la lista de reproducción") . El UITabBarController contiene varios UINavigationControllers que a su vez contienen UITableViewControllers subclassed. Esta es la forma en que estoy detectando actualmente si el UITableViewController subclase se presenta dentro de un UITabBarController modal:Determinar si un UIViewController se presenta de manera modal
- (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
}
}
¿Hay una manera de hacer esto que no implica subir el árbol parentViewController o subclasificación de toda la visión intermedia Controladores para pasar el estado isModal cuando se inicializan?
Fundición a la subclase. Eso parece incomodo. ¿Por qué subclase? ¿Por qué no agregar una categoría a UITabBarController que contiene isModal? –