Tôi có một bảng phân cảnh được thiết lập với đăng nhập đang hoạt động và bộ điều khiển chế độ xem chính, bảng sau là bộ điều khiển chế độ xem mà người dùng được điều hướng đến khi đăng nhập thành công. Mục tiêu của tôi là hiển thị bộ điều khiển chế độ xem chính ngay lập tức nếu xác thực (được lưu trữ trong chuỗi khóa) thành công và hiển thị bộ điều khiển chế độ xem đăng nhập nếu xác thực không thành công. Về cơ bản, tôi muốn thực hiện việc này trong AppDelegate của mình:
// 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
}
Tôi biết về phương thức performanceSegueWithIdentifier: nhưng phương thức này là một phương thức thể hiện của UIViewController, vì vậy không thể gọi được từ bên trong AppDelegate. Làm cách nào để thực hiện việc này bằng cách sử dụng bảng phân cảnh hiện có của tôi ??
BIÊN TẬP:
Bộ điều khiển chế độ xem ban đầu của Storyboard hiện là bộ điều khiển điều hướng không được kết nối với bất kỳ thứ gì. Tôi đã sử dụng setRootViewController: phân biệt vì MainIdentifier là một UITabBarController. Sau đó, đây là những gì các dòng của tôi trông như thế này:
- (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;
}
Đề xuất / cải tiến được hoan nghênh!