实现登录视图控制器

时间:2015-11-10 15:56:18

标签: ios login storyboard

我正在使用Xcode 7开发适用于iOS 9兼容设备的Objective-C中的应用程序,并且我在登录部分遇到了一些困难。如果用户尚未登录,我的故事板应该如何以root视图显示登录视图控制器? 在这个应用程序中,根视图控制器是一个简单的视图控制器,带有一个导航控制器的segue,它包含两个简单的视图控制器。

2 个答案:

答案 0 :(得分:0)

我处理登录的方式是将登录视图控制器嵌入导航控制器中。它是应用程序运行时显示的初始视图控制器。

我在NSUserDefaults中设置一个名为LoggedIn的BOOL变量,并在每次在登录视图控制器的viewDidLoad中打开应用程序时检查它。如果变量= NO显示登录视图控制器,并且变量= YES推送到下一个视图控制器(动画:否),那么用户看到的第一件事就是你想要它们的屏幕。

在登录视图控制器viewDidLoad中:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([[defaults valueForKey:@"LoggedIn"] isEqualToString:@"YES"]) {
    ViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"viewController"];
    [self presentViewController:vc animated:NO completion:nil];
}

答案 1 :(得分:0)

登录成功后将Bool设置为NSUserdefaults。将此代码放入成功登录后调用的方法中:

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    defaults setBool:YES forKey:@"login.state"];
    [defaults synchronize];
// go to your next ViewController

然后在didFinishLaunchWithOptions方法中检查您的Appdelegate.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
if ([defaults boolForKey:@"login.state"] == YES) {
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

        SWRevealViewController *swrvc = [storyboard instantiateViewControllerWithIdentifier:@"revealVC"];
        self.window.rootViewController = swrvc;
        [self.window.rootViewController.navigationController popViewControllerAnimated:YES];
    }
    else {

        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        LoginViewController *lvc = [storyboard instantiateViewControllerWithIdentifier:@"loginVC"];
        UINavigationController *navigationController=[[UINavigationController alloc] initWithRootViewController:lvc];
        self.window.rootViewController = navigationController;
        [self.window makeKeyAndVisible];
    }
}

如果您需要任何帮助,请询问!

相关问题