显示/隐藏标签栏

时间:2011-07-14 16:43:47

标签: iphone objective-c uitabbarcontroller tabbar

大家 我有一个问题,我一直在寻找解决方案,但找不到任何问题。我正在开发基于标签栏的应用程序。问题是我想在第一个屏幕上隐藏标签栏,然后在第一个屏幕后显示的所有其他屏幕上显示它。 有谁能请给我这个问题的最佳解决方案?

实际情况是我有一个登录屏幕。现在我不想在此处显示标签栏,因为只有在用户登录时才会显示标签栏。当用户登录时,我希望显示标签栏以显示其内容。

最好的问候

2 个答案:

答案 0 :(得分:5)

如果您的标签栏控制器为rootController,则可以使用rootController.selectedIndex =0选择第一个标签栏项目,rootController.selectedIndex =1;等等。

只要加载该特定视图,您就可以加载数组中的其他视图,然后将其添加到带有动画的rootController.selectedIndexreloadInputViews

修改(根据评论)

因此,您有一个标签栏控制器,并且您希望在启动应用程序时显示简介和登录屏幕。如果登录成功,您想要显示标签栏控制器!这可以使用ModalViewControllers

完成
  1. 在首先加载的视图的ViewDidLoad中(默认情况下它是您的第一个标签页),添加

    //Declare Introduction Screen//
    
    IntroductionController *introductionController = [[IntroductionController alloc] initWithNibName:@"IntroductionController" bundle:[NSBundle mainBundle]];
    
    //Give a navigation screen for your introduction screen and set it to introduction screen
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:introductionController];
    
    navController.title = @"Introduction";
    navController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:navController animated:NO];
    
  2. 现在,只要第一个标签栏加载,您的介绍屏幕就会加载。但是加载是瞬时的,因此用户的眼睛看不到它。现在引用您的登录视图控制器,如@class LoginController,并创建一个对象LoginViewController *lvc;,并进行综合。现在声明LoginButton并在IBAction

    中声明
    -(IBAction) loginAction: (id) sender{
    
     NSLog(@"I clicked Login");
    
     if (self.lvc ==nil){
        self.lvc = [[LoginController alloc] init ];
    
     }
    
     lvc.title = @"Login";
     [self.navigationController pushViewController: self.lvc animated:YES];
    
    
     }
    
  3. LoginViewController中,如果登录成功,只需执行

    [self dismissModalViewControllerAnimated:YES];
    

答案 1 :(得分:-2)

为uitabbar创建一个插座,然后将其声明隐藏在第一个屏幕中,然后创建一个新的空白,而不是因为它在第一个屏幕中没有工作,让它说,让我们说,隐藏。在里面隐藏,把代码说成你的uitabbar.hidden = YES;然后,为了使其在另一个视图中工作,请在viewDidLoad:

中写下它
 [(//first view*)[UIApplication sharedApplication].delegate //the void, in this case, hide];