Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
451 views
in Technique[技术] by (71.8m points)

iphone - Show / Hide tab bar

Everyone I have a problem and I have been searching the solution but could not find any. I am working on a tab bar based app. Problem is that I want to hide tab bar at first screen and then show it on all other screens that are being displayed after first screen. Can anyone please give me the best solution for this problem?

Actual scenario is that I have a screen that is login screen. Now i dont want to show tab bar here as tab bar will be displayed only if the user is signed in. When user logs in, I want the tab bar to be displayed showing its contents.

Best Regards

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

If you have your Tab Bar Controller as your rootController, you can use rootController.selectedIndex =0 for selecting 1st Tab bar Item, and rootController.selectedIndex =1; and so forth.

As soon as that particular view loads, you can load the other views in an array, and then add it to the rootController.selectedIndex and reloadInputViews with animation.

Edit: (as per the comments)

So you have a tab bar controller, and you want to show the introduction and the login screen while starting the App. If login is successful, you want to present the tab bar controller ! This can be done with ModalViewControllers

  1. In the ViewDidLoad of the view that loads up first, (it's your first tab by default), add

    //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. Now your introduction screen would load as soon as your first tab bar loads. But the loading is instantaneous, so it's not visible to the user's eye. Now reference your Login View Controller like @class LoginController and create an object LoginViewController *lvc;, and synthesize it. Now declare LoginButton and in the 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. And in the LoginViewController, if Login is successful, just do

    [self dismissModalViewControllerAnimated:YES];
    

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...