Das Hauptfenster meiner Anwendung enthält einen xib-basierten UITabBarController (vollständig in Interface Builder konfiguriert), der auch modal präsentiert werden kann (ähnlich wie die Music.app "Modesuche zur Playlist hinzufügen") . Der UITabBarController enthält eine Reihe von UINavigationControllern, die wiederum untergeordnete UITableViewControllers enthalten. Dies ist, wie ich Erfassen, wenn die gegenwärtig subclassed UITableViewController innerhalb eines modalen UITabBarController präsentiert wird:Ermitteln, ob ein UIViewController modal präsentiert wird
- (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
}
}
Gibt es eine Möglichkeit, dies zu tun, ist nicht mit dem parent Baum zu Fuß nach oben oder Subklassen aller Zwischenansicht Controller, um den isModal-Zustand weiterzugeben, wenn sie initialisiert werden?
Umwandlung in Unterklasse. Das scheint peinlich zu sein. Warum Unterklasse? Warum nicht eine Kategorie zu UITabBarController hinzufügen, die isModal enthält? –