我的应用程序主窗口包含一个基于xib的UITabBarController(在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状态,而实现这个目标呢?