我有一个设置好的故事板,其中包含工作登录和主视图控制器,后者是当登录成功时用户导航到的视图控制器。 我的目标是如果身份验证(存储在keychain中)成功,则立即显示主视图控制器,如果身份验证失败,则显示登录视图控制器。 基本上,我想在我的AppDelegate中实现这个:
// url request & response work fine, assume success is a BOOL here
// that indicates whether login was successful or not
if (success) {
// 'push' main view controller
} else {
// 'push' login view controller
}
我知道performSegueWithIdentifier:这个方法,但它是UIViewController的实例方法,所以无法从AppDelegate中调用。 如何在使用现有的storyboard的情况下完成这个操作?
编辑:
Storyboard的初始视图控制器现在是一个未连接到任何东西的导航控制器。我使用了setRootViewController:区别是因为MainIdentifier是UITabBarController。然后我的代码看起来像这样:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
BOOL isLoggedIn = ...; // got from server response
NSString *segueId = isLoggedIn ? @"MainIdentifier" : @"LoginIdentifier";
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
UIViewController *initViewController = [storyboard instantiateViewControllerWithIdentifier:segueId];
if (isLoggedIn) {
[self.window setRootViewController:initViewController];
} else {
[(UINavigationController *)self.window.rootViewController pushViewController:initViewController animated:NO];
}
return YES;
}
欢迎提出建议和改进!
presentViewController:
жҲ–performSegueWithIdentifier:
жқҘеҮҶеӨҮдёӨдёӘеҚ•зӢ¬зҡ„storyboardгҖӮ - Blaszard