我的UITabBarController
有四个UIViewControllers
。这些是在app delegate中设置的,一切都按预期运行。
我已将第一个UIViewController
设置为UITabBarControllerDelegate
,并且也可以正常工作;按下标签shouldShowViewController
按预期激发。
在第一个UIViewController
内,第一个标签是按钮。一个人使用标准推送另一个UIViewController
:
[self.navigationController pushViewController:vc animated:YES];
这很好用:新的UIViewController
和它的视图按预期显示。
但是,当我按下tab键时,shouldShowViewController
函数被调用(如预期的那样)并将引用传递给第一个选项卡(如预期的那样)但是找不到子UIViewController
。也就是说,viewController.navigationController.viewControllers
是一个空数组(count == 0
)。
要调试我实现了UINavigationControllerDelegate
并将navigationController分配给UIViewController
和标签控制器中的同一个类。它从标签控制器调用时触发,但不是视图控制器。
我已经尝试了所有我能想到的东西来找到对最顶层可见视图控制器的引用但是我很难过;它似乎消失在一个黑洞里。我已经准备好尝试手动保留堆栈但是试图保持一个内置系统功能的并行阵列似乎是一个维护混乱的设置。我使用的是iOS6。