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