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

我的AppDelegate代码的一部分是:

UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; UINavigationController *navigationController = [[tabBarController viewControllers] objectAtIndex:0]; PilotosViewController *playersViewController = [[navigationController viewControllers] objectAtIndex:0]; playersViewController.drivers = players; 

但我得到这个例外:

– [UIViewController viewControllers] :无法识别的select发送到实例0x6a75770
***终止应用程序由于未捕获的exception“NSInvalidArgumentException”,原因:' – [UIViewController viewControllers]:无法识别的select发送到实例0x6a75770'

错误在哪里?

我遇到了同样的问题,因为我遵循了作者的步骤,但是

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

这是导致崩溃的原因,因为navigationController不在index=0 ,我没有交换两个标签栏项目的位置,然后它工作。

您需要确保在XIB或故事板中正确连接。 当你发送[tabBarController viewControllers] ,你期待一个UITabBarController的exception是向你显示该对象的typesViewController 。 这就是为什么你越来越'-[ViewController viewControllers]: 确保你的根视图控制器真的是一个选项卡视图控制器。

您显然在index = 0上接收不同types的对象。

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