2012-03-20 67 views
3

部分是:“无法识别的选择发送到实例” 的错误我的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'

错误在哪里?

+1

你怎么知道这是导致问题的代码段?您是否设置了断点并使用调试器跟踪了代码执行?该错误表示您已将viewController发送给UIViewController实例,但您的代码片段仅显示接收该消息的UITabBarController和UINavigationController实例。 – 2012-03-20 12:44:54

回答

1

您需要确保在XIB或故事板中正确连接东西。例外情况是,当您发送[tabBarController viewControllers]并且您期待UITabBarController时,该对象的类型为ViewController。这就是为什么你得到'-[ViewController viewControllers]:。确保你的根视图控制器真的是一个选项卡视图控制器。

11

我遇到了同样的问题,因为我接着笔者的步骤,但

UINavigationController *navigationController 
    = [[tabBarController viewControllers] objectAtIndex:0]; 

这是它取得的崩溃,因为navigationController不在index=0, 我做交换的位置两个标签栏项目,然后它的作品。

+1

非常感谢。你节省了我的一天。 – Philip007 2012-08-04 20:25:18

+0

谢谢..我刚刚呆了半小时。自己搜索无法找到答案。在STO阅读你的答案,解决了我的问题。 :)我投你的答案。 – 2012-10-24 08:39:36

0

显然你是在指数接收不同类型的对象= 0

如果您使用的故事板去那里,打开导航>查找特定的控制器>看关系。这个顺序可以在引用其viewControllers集合时使用。

相关问题