2016-04-07 47 views
1

我想在故事板編程方式更改選項卡,但收到錯誤的iOS:標籤編程方式更改 - 故事情節

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 

TabViewController *tabBarCon = [storyboard 
          instantiateViewControllerWithIdentifier:@"tabBar"]; 

tabBarCon.selectedViewController = [tabBarCon.viewControllers objectAtIndex:1]; 

錯誤

終止應用程序由於未捕獲的異常「NSInvalidArgumentException」,原因:「*** - [__ NSArrayM insertObject:atIndex:]:object can not be nil'

這裏tabBarCon.viewControllers不爲空。

NSLog(@"%@",tabBarCon.viewControllers);

(
"<FirstViewController: 0x16642020>", 
"<SecondViewController: 0x173c4c00>", 
"<ThirdViewController: 0x166db570>", 
"<ForthViewController: 0x166d17c0>", 
"<FifthViewController: 0x166066a0>" 
) 
+0

日誌中的實例顯示,同時將零對象數組發生崩潰。嘗試添加異常斷點來檢測導致崩潰的確切行。 –

+0

line'tabBarCon.selectedViewController = [tabBarCon.viewControllers objectAtIndex:1];'正在崩潰 – Salim

+0

只是說'tabBarCon.selectedIndex = 1;' –

回答

0

試試這個:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
TabViewController *tabBarCon = [storyboard       instantiateViewControllerWithIdentifier:@"tabBar"]; 
[self.tabBarController setSelectedIndex:1]; 
+0

它不起作用。沒有崩潰,但沒有任何反應 – Salim

+0

你嘗試設置selectedIndex後推或呈現tabbarcontoller ....... –

0

嘗試這個

UITabBarController *controller =(UITabBarController *)  
self.window.rootViewController; 
[controller setSelectedIndex:1]; 

我已經嘗試過的appDelegate它正在

+0

我已經把該代碼放在Appdelegate所以有self.window.rootViewController對不起 –

+0

第二行不完整 – Salim

+0

的意思是[控制器setSelectedIndex:1]? @Salim –

2

你需要有實例tabba rcontroller。

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 

TabViewController *tabBarCon = [storyboard instantiateViewControllerWithIdentifier:@"tabBar"]; 

此語句從storyboard創建tabbar的新實例。

[self.tabBarController setSelectedIndex:1]; 

如果你是標籤欄控制器內,那麼你將很容易地得到使用self.tabBarController

相關問題