Saya memiliki storyboard yang disiapkan dengan login yang berfungsi dan pengontrol tampilan utama, yang terakhir adalah pengontrol tampilan tempat pengguna dinavigasi saat login berhasil. Tujuan saya adalah untuk segera menampilkan pengontrol tampilan utama jika otentikasi (disimpan dalam rantai kunci) berhasil, dan menampilkan pengontrol tampilan masuk jika otentikasi gagal. Pada dasarnya, saya ingin melakukan ini di AppDelegate saya:
// 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
}
Saya tahu tentang metode performSegueWithIdentifier: tetapi metode ini adalah metode contoh UIViewController, jadi tidak dapat dipanggil dari dalam AppDelegate. Bagaimana cara melakukan ini menggunakan papan cerita saya yang sudah ada ??
EDIT:
Pengontrol tampilan awal Storyboard sekarang adalah pengontrol navigasi yang tidak terhubung ke apa pun. Saya menggunakan perbedaan setRootViewController: karena MainIdentifier adalah UITabBarController. Maka seperti inilah garis saya terlihat:
- (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;
}
Saran / perbaikan dipersilahkan!