2012-04-04 142 views
0

我是新来这个iphone development.I已经创建了一个标签栏应用程序,它由6个选项卡 这是对标签栏控制器创作appdelegaate文件didfinishlaunching如何隐藏标签栏项目?

UIViewController *viewController1 = [[[cardsAvailable1 alloc] 
             initWithNibName:@"cardsAvailable1" bundle:nil] autorelease]; 
UIViewController *viewController2 = [[[fetchcard1 alloc] 
             initWithNibName:@"fetchcard1" bundle:nil] autorelease]; 
UIViewController *viewController3 = [[[registration alloc] 
             initWithNibName:@"registration" bundle:nil] autorelease]; 
UIViewController *viewController4 = [[[logintab alloc] 
             initWithNibName:@"logintab" bundle:nil] autorelease]; 

UIViewController *viewController5 = [[[registration alloc] 
             initWithNibName:@"logout" bundle:nil] autorelease]; 
UIViewController *viewController6 = [[[logintab alloc] 
             initWithNibName:@"myprofile" bundle:nil] autorelease]; 

self.tabBarController = [[[UITabBarController alloc] init] autorelease]; 

self.tabBarController.viewControllers = [NSArray arrayWithObjects: 
             [[[UINavigationController alloc] initWithRootViewController:viewController1] autorelease], 
             [[[UINavigationController alloc] initWithRootViewController:viewController2] autorelease], 
             [[[UINavigationController alloc] initWithRootViewController:viewController3] autorelease], 
             [[[UINavigationController alloc] initWithRootViewController:viewController4] autorelease], 
             [[[UINavigationController alloc] initWithRootViewController:viewController5] autorelease], 
             [[[UINavigationController alloc] initWithRootViewController:viewController6] autorelease], 
             nil]; 
self.tabBarController.selectedIndex = 3; 

self.window.rootViewController = self.tabBarController; 
[self.window addSubview:self.tabBarController.view]; 

[self.window makeKeyAndVisible]; 

我现在的问题是之后的代码人是登录即点击登录页面上的登录按钮,我想隐藏两个标签栏项目,即注册页面和登录页面,需要带注销页面和myprofile页面的标签栏包括取卡和卡可用任何人都可以建议我采取这种方法吗?

回答

3

您可以通过编辑标签栏的视图控制器阵列来添加和删除标签栏上的项目。

NSMutableArray newArrayOfItems = [[NSMutableArray alloc] initWithArray:self.tabBarController items]]; 
[newArrayOfItems removeObjectAtIndex:indexOfUnneededItem]; 
[self.tabBarController setItems:newArrayOfItems animated:true]; 
[newArrayOfItems release]; 

在您的示例中,作为对您的评论的回应,只要您导入您的应用程序委托标题,以下代码就可以工作。

NSMutableArray newArrayOfItems = [[NSMutableArray alloc] initWithArray: [[[UIApplication sharedApplication] delegate].tabBarController items]]; 
[newArrayOfItems removeObjectAtIndex:indexOfUnneededItem]; 
[[[UIApplication sharedApplication] delegate].tabBarController setItems:newArrayOfItems animated:true]; 
[newArrayOfItems release]; 
+0

我认为这不会工作,因为我创建的标签栏应用程序,以便在标签栏控制器代码写在委托文件didfinishlaunching.then我如何能在另一个类文件中使用此代码。你能告诉我该把代码放在哪里吗? – user1288402 2012-04-04 05:03:33

+0

您需要在其他类文件中引用标签栏控制器。例如,您可以使标签栏控制器成为应用程序代理的一个属性,并在那里访问它。另一种方法是在应用程序委托中添加一个方法,您的类可以执行并删除该选项卡。 – 2012-04-04 05:13:14

+0

我已经更新了我的回复中的代码,以便为您的特定应用程序工作。 – 2012-04-04 05:17:02

1

您可以设置推视图控制器前hidesBottomBarWhenPushed财产。有下面的示例代码:

LoginController *lc = [[LoginController alloc] initWithNibName:nil bundle:nil]; 
lc.hidesBottomBarWhenPushed = YES; 
[self.navigationController pushViewController:lc animated:YES]; 
[lc release];