这似乎是一个如此愚蠢的问题,但我无法弄清楚:
我的故事板如下:TabBarController
- > Navigation Controller
- > Table View Controller 1
- > Table View Controller 2
。
此代码位于Tab Bar Controller
,我正在尝试访问Table View Controller 2
所以我理解它的方式,这让我得到了Navigation Controller
let tempNavVC = self.viewControllers?[0] as! UINavigationController
这应该是Table View Controller 2
,因为我认为它是tempNavVC
的{{1}}数组的索引1。
viewControllers
然而,显然不是因为我得到了:
'NSRangeException',原因:'*** - [__ NSSingleObjectArrayI objectAtIndex:]:索引1超出边界[0 .. 0]'
非常感谢任何帮助。
答案 0 :(得分:2)
故事板描述了关系,但它没有描述运行时现实。推送视图控制器(如第二个表视图控制器)是推送发生时可以存在的东西,但它不一定是 存在的东西。
因此,如果导航视图控制器具有两个子节点,tempNavVC.viewControllers[1]
将起作用,即如果第二个表视图实际上现在正在界面中显示。但是如果只有第一个表视图控制器子项存在,那就不会(因为第二个尚未实例化并推送到导航视图控制器上)。
答案 1 :(得分:1)
let navC = tabbarController.viewcontrollers[0] as! UINavigationController
let tableC: UIViewController = navC.rootViewController
...