2012-03-20 37 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集合時使用。

相關問題