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