Главное окно моего приложения содержит UITabBarController на основе xib (полностью настроенный в Interface Builder), который также может быть представлен модально (во многом как модальное представление Music.app «Добавить песни в список воспроизведения»). UITabBarController содержит ряд UINavigationController, которые, в свою очередь, содержат подклассы UITableViewControllers. Вот как я в настоящее время определяю, представлен ли подкласс UITableViewController внутри модального UITabBarController:
- (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
}
}
Есть ли способ сделать это, который не требует перехода вверх по дереву parentViewController или создания подклассов всех промежуточных контроллеров представления для передачи вниз состояние isModal при их инициализации?