2014-10-27 25 views
1

TabBar不应该启用任何标签,直到用户点击任何一个标签, 下面是我写的代码来显示标签栏,但问题默认情况下它显示第一个标签。UITabBar Fuctionality

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
// Override point for customization after application launch. 
self.window.backgroundColor = [UIColor whiteColor]; 
[self.window makeKeyAndVisible]; 

    PeopleViewController *peopleViewController = [[PeopleViewController alloc] init]; 
UINavigationController *nav1 = [[UINavigationController alloc] initWithRootViewController:peopleViewController]; 
[peopleViewController setTitle:@"People"]; 

EventsViewController *eventsViewController = [[EventsViewController alloc] init]; 
UINavigationController *nav2 = [[UINavigationController alloc]initWithRootViewController:eventsViewController]; 
[eventsViewController setTitle:@"Events"]; 

ActiveViewController *activeViewController = [[ActiveViewController alloc] init]; 
UINavigationController *nav3 = [[UINavigationController alloc]initWithRootViewController:activeViewController]; 
[activeViewController setTitle:@"Active"]; 

MoreViewController *moreViewController = [[MoreViewController alloc] init]; 
UINavigationController *nav4 = [[UINavigationController alloc] initWithRootViewController:moreViewController]; 
[moreViewController setTitle:@"More"]; 

NSArray *arrViewControllers = [[NSArray alloc] initWithObjects:nav1,nav2,nav3,nav4, nil]; 

[tabBarController setViewControllers:arrViewControllers]; 
[self.window addSubview:tabBarController.view]; 
    return YES; 

} 
+0

这是UITabBarController的默认行为,你是问如何改变这种行为? – 2014-10-27 09:29:34

+0

@Guillaume Algis是的,我想改变它。是否有可能改变这种情况?如果可能的话,请帮助我 – Madhu 2014-10-27 09:31:20

回答

0

为标签栏(例如theTabBar)和使用以下代码创建一个IBOutlet:

[theTabBar setSelectedItem:nil];

+0

>应用程序崩溃,出现以下错误:终止应用程序,由于未捕获异常'NSInternalInconsistencyException',原因:'直接修改标签栏控制器管理的标签栏不被允许。' – Madhu 2014-10-27 09:36:02

+0

回答已更新。 – 2014-10-27 09:36:39

+0

从文档:“你永远不应该尝试操纵存储在这个属性中的UITabBar对象本身,如果你尝试这样做,标签栏视图会抛出一个异常。” – 2014-10-27 09:38:37

0

这是UITabBarController默认行为,默认情况下第一标签被选中。 您可以选择在第一个实例中选择其他选项卡,但不能将选中的默认选项更改为空。

[tabBarController setSelectedIndex:0]; 

默认情况下,选定索引为0,这是第一个选项卡,您可以根据您的要求将其更改为1,2,3。

+0

@ user3982359:有没有其他的选择,比如我们能否知道第二次选择标签项目? – Madhu 2014-10-27 09:53:27