不同的UIViewController登录

时间:2015-06-23 20:40:03

标签: ios objective-c uiviewcontroller

当用户打开应用时,它会显示登录UIViewController。当用户登录时,它会重定向到下一个mapkit UIViewController。但是当用户再次打开应用程序时,我希望他会跳过登录UIViewController。我怎样才能做到这一点?我在登录方法viewWillAppear中尝试以编程方式重定向,但它工作正常(它显示控制器为第二个)。

Map controller p

3 个答案:

答案 0 :(得分:1)

更好的方法是在AppDelegate中添加此检查

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    if(isLoggedin) {
        Storyboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        UIViewController *mapViewController = [storyboard instantiateViewControllerWithIdentifier:@"mapViewController" ];
        self.rootViewController = [[UINavigationCotroller alloc] initWithRootViewController:mapViewController];
    }
    return YES;
}

答案 1 :(得分:1)

不是在第一个视图控制器的viewWillAppear:方法中检查登录,而是在应用程序委托的didFinishLaunchingWithOptions:方法中执行此操作:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    if (loggedIn) {
        UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
        [navigationController.topViewController performSegueWithIdentifier:@"1to2" sender:navigationController.topViewController];
        return YES;
    }
}

其中1to2是视图控制器1到2的segue的标识符。

答案 2 :(得分:0)

你可以这样做:

<强> AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // replace with your real auth-checking
    if ([self wasAuthorized] == NO) {

        [self showLoginController];

    }

    return YES;

}

- (UIViewController *)mainController {

    UINavigationController *rootNavigationController = (UINavigationController *)[[self window] rootViewController];
    return [[rootNavigationController viewControllers] firstObject];

}

- (void)showLoginController {

    UIViewController *loginController = [self loginController];
    dispatch_async(dispatch_get_main_queue(), ^{

        [self.mainController presentViewController:loginController animated:YES completion:nil];        

    });

}

- (UIViewController *)loginController {

    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    return [mainStoryboard instantiateViewControllerWithIdentifier:@"LoginNavController"];

}