简体   繁体   中英

Show login view controller before tab bar controller

I am new to iphone development. I am developing an iphone application which contains four tabs. I have implemented it using tab bar controller. But now i need to show a login screen without tabs before tab bar controller. I have tried so many methods but didnt get the one i wanted.

Can anyone pls explain how to do this with a code snippet??

Create a new class LoginViewController. When your application launches then add the view to the window. Now when login is successful then remove it from superview and add the MainController.

Create a subclass of UITabBarController (though it's not advised by apple), but for this purposes it should be ok and do this in viewWillAppear

- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    BOOL isLogged in = //do something to determine if you're logged in
    if(!loggedIn){
        LoginViewController *loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginViewControllerNibHere" bundle:nil];
        [self presentModalViewController:loginViewController animated:YES]; //or NO if you don't want it animated
        [loginViewController release];
    }
}

Or add this to a category for UITabBarController and import it in the app delegate or wherever you're using the UITabBarController

The best way to do this is to create a new LoginViewController as other people have mentioned and then set your rootviewController to tabBarcontroller as soon as you authenticate the user. Here is how you can do this in swift, this is snippet to put as soon you authenticate your user in LoginViewController

let tabBarController = self.storyboard?.instantiateViewControllerWithIdentifier("TabBarController") as! UITabBarController
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.window?.rootViewController = tabBarController

Where TabBarController is the storyboard id of your tab bar controller. It could be anything whatever name you have given it.

  • Create a new UIViewController subclass with a nib that represents your login screen (I'll refer to it as SignInViewController).
  • Open your MainWindow.nib file and add a new UIViewController
  • Set the new UIViewController's class type to SignInViewController
  • Set the UIWindow's rootViewController outlet to the new SignInViewController
  • Now create a new nib file and copy your existing UITabBarController to it (it's best to split nibs rather than having a single-mega nib)
  • Back in your MainWindow.xib change the existing UITabBarController's attributes to specify the nib name that you just created

Check this Link's source code,

it uses Login Controller as modal view with 4 tabs

http://code.google.com/p/tweetero/source/checkout

Also i tried this way ,

in my first tab view - in viewDidAppear - i'll check Login = YES then

show the LoginController

- [self.tabbarcontroller presentMOdalViewcontroller:LoginView animated:YES];

so every time u click on first tab - if u need to Login put a flag - check it & show Login View

Hope this Helps.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM