2016-04-07 20 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

相关问题