在 IOS 開發當中常常碰到 whose view is not in the window hierarchy 的錯誤,該錯誤簡單的說,是因爲 "ViewController" 尚未被加載,就調用該 ViewController 或者 ViewController 內的方法時,就會報這個錯誤。spa
在不一樣地方調用 ViewController,解決的方法也不太同樣。 1. 在 一個 ViewController 裏面調用另一個 ViewController 是出現這個錯誤: 該錯誤通常是因爲在 viewDidLoad 裏面調用引發的,解決辦法是轉移到 viewDidAppear 方法裏面 2. 在 AppDelegate.m 中調用遇到這個錯誤 解決辦法1: UIViewController *topRootViewController = [UIApplication sharedApplication].keyWindow.rootViewController; while (topRootViewController.presentedViewController) { topRootViewController = topRootViewController.presentedViewController; } //[topRootViewController presentViewController:yourController animated:YES completion:nil]; //or [topRootViewController myMethod]; 解決辦法2: UIStoryboard *mainstoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; LoginViewController* loginViewController = [mainstoryboard instantiateViewControllerWithIdentifier:@"LoginViewController"]; [self.window makeKeyAndVisible]; //[LoginViewController presentViewController:yourController animated:YES completion:nil]; //or [LoginViewController myMethod];