작업 로그인 및 기본보기 컨트롤러로 설정된 스토리 보드가 있으며, 후자는 로그인이 성공할 때 사용자가 탐색하는보기 컨트롤러입니다. 내 목표는 인증 (키 체인에 저장 됨)이 성공하면 즉시 메인 뷰 컨트롤러를 표시하고 인증이 실패하면 로그인 뷰 컨트롤러를 표시하는 것입니다. 기본적으로 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의 초기보기 컨트롤러는 이제 아무것도 연결되지 않은 탐색 컨트롤러입니다. MainIdentifier가 UITabBarController이기 때문에 setRootViewController : 구분을 사용했습니다. 그러면 내 라인은 다음과 같습니다.
- (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;
}
제안 / 개선을 환영합니다!