ฉันมีสตอรี่บอร์ดที่ตั้งค่าด้วยการเข้าสู่ระบบที่ใช้งานได้และตัวควบคุมมุมมองหลักส่วนหลังเป็นตัวควบคุมมุมมองที่ผู้ใช้จะถูกนำทางไปเมื่อการเข้าสู่ระบบสำเร็จ วัตถุประสงค์ของฉันคือแสดงตัวควบคุมมุมมองหลักทันทีหากการตรวจสอบความถูกต้อง (เก็บไว้ในพวงกุญแจ) สำเร็จและแสดงตัวควบคุมมุมมองการเข้าสู่ระบบหากการรับรองความถูกต้องล้มเหลว โดยทั่วไปฉันต้องการทำสิ่งนี้ใน 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 ตอนนี้เป็นตัวควบคุมการนำทางซึ่งไม่ได้เชื่อมต่อกับอะไรเลย ฉันใช้ setRootViewController: distinction เนื่องจาก 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;
}
ข้อเสนอแนะ / การปรับปรุงยินดีต้อนรับ!