“Unrecognized selector sent to instance” error

2019-02-19 03:35发布

Part of my AppDelegate code is:

UITabBarController *tabBarController 
    = (UITabBarController *)self.window.rootViewController;

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

PilotosViewController *playersViewController 
    = [[navigationController viewControllers] objectAtIndex:0];

playersViewController.drivers = players;

But I get this exception:

-[UIViewController viewControllers]: unrecognized selector sent to instance 0x6a75770
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewController viewControllers]: unrecognized selector sent to instance 0x6a75770'

Where is the mistake?

3条回答
男人必须洒脱
2楼-- · 2019-02-19 03:42

I met the same issue, because I followed the steps by the author, but

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

this is what which made the crash, because navigationController is not at index=0, I did exchange the locations of the two tab bar items, then it works.

查看更多
别忘想泡老子
3楼-- · 2019-02-19 03:47

You are obviously receiving different type of object on index = 0.

If you are using storyboard go there and open Navigator > find specific controller > see Relationships. This order can be used when referencing its viewControllers collection.

查看更多
疯言疯语
4楼-- · 2019-02-19 04:02

You need to make sure that you connect things properly in your XIB or storyboard. The exception is showing you that the object is of type ViewController when you send [tabBarController viewControllers] and you were expecting a UITabBarController. That's why you're getting '-[ViewController viewControllers]:. Make sure that your root view controller really is a tab view controller.

查看更多
登录 后发表回答