我的AppDelegate代码的一部分是:
UITabBarController *tabBarController
= (UITabBarController *)self.window.rootViewController;
UINavigationController *navigationController
= [[tabBarController viewControllers] objectAtIndex:0];
PilotosViewController *playersViewController
= [[navigationController viewControllers] objectAtIndex:0];
playersViewController.drivers = players;
但我得到了这个例外:
- [UIViewController viewControllers] :无法识别的选择器发送到实例0x6a75770
***
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [UIViewController viewControllers]:无法识别的选择器发送到实例0x6a75770'
错误在哪里?
答案 0 :(得分:11)
我遇到了同样的问题,因为我按照作者的步骤进行了操作,但是
UINavigationController *navigationController
= [[tabBarController viewControllers] objectAtIndex:0];
这是导致崩溃的原因,因为navigationController
不在index=0
,
我确实交换了两个标签栏项目的位置,然后就可以了。
答案 1 :(得分:1)
您需要确保在XIB或故事板中正确连接。例外情况是,当您发送ViewController
并且您期望[tabBarController viewControllers]
时,该对象的类型为UITabBarController
。这就是你得到'-[ViewController viewControllers]:
的原因。确保您的根视图控制器确实是标签视图控制器。
答案 2 :(得分:0)
您显然在index = 0上接收不同类型的对象。
如果您正在使用故事板,那么请打开Navigator>找到特定的控制器>看到关系。在引用其viewControllers集合时可以使用此顺序。