“无法识别的选择器发送到实例”错误

时间:2012-03-20 10:30:18

标签: objective-c ios uiviewcontroller

我的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'

错误在哪里?

3 个答案:

答案 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集合时可以使用此顺序。