我是在做一個藍(lán)牙項目遇到這種問題的可训,需求是藍(lán)牙連接后按設(shè)備按鈕調(diào)用相機(jī)并且控制相機(jī)拍照定踱,因此我選擇使用自定義相機(jī),設(shè)備發(fā)送的參數(shù)都是在一個cordova插件中實現(xiàn)的迫筑,它的父類是NSObject類型的引润。當(dāng)我實現(xiàn)跳轉(zhuǎn)到自定義的相機(jī)控制器里面時巩趁,一直出現(xiàn)whose view is not in the window hierarchy 這個錯誤,最后淳附,我把在 viewDidLoad 里面的方法轉(zhuǎn)移到 viewDidAppear 方法里面议慰,然后就解決了。
該錯誤簡單的說燃观,是由于 "ViewController" 還沒有被加載褒脯,就調(diào)用該 ViewController 或者 ViewController 內(nèi)的方法時便瑟,就會報這個錯誤缆毁。在不同地方調(diào)用 ViewController,解決的方法也不太一樣到涂。
- 在 一個 ViewController 里面調(diào)用另外一個 ViewController 是出現(xiàn)這個錯誤:
該錯誤一般是由于在 viewDidLoad 里面調(diào)用引起的脊框,解決辦法是轉(zhuǎn)移到 viewDidAppear 方法里面
- 在 AppDelegate.m 中調(diào)用遇到這個錯誤
解決辦法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];
參考地址:http://stackoverflow.com/questions/11862883/whose-view-is-not-in-the-window-hierarchy