最佳答案
我用工作登录和主视图控制器设置了一个情节串连板,后者是登录成功时用户导航到的视图控制器。 我的目标是在身份验证成功时立即显示主视图控制器(存储在密钥链中) ,并在身份验证失败时显示登录视图控制器。 基本上,我想在我的应用程序代理中这样做:
// 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 的一个实例方法,所以不能从 Appete 内部调用。 我如何使用我现有的故事板来做到这一点? ?
编辑:
Storyboard 的初始视图控制器现在是一个没有连接到任何东西的导航控制器。我使用 setRootViewController: different 是因为 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;
}
欢迎提供意见/改善建议!