2013-05-06 154 views
1

我不斷收到此警告,無論我嘗試什麼,我都不知道如何解決它。呈現模態視圖保持失敗

Attempt to present <LoginViewController: 0x1f0b5010> on <ViewController: 0x1dda1670> whose view is not in the window hierarchy! 

我沒有,因爲我編程調用模式的看法在我的故事情節進行賽格瑞:

//Load Login View if no username is found 
NSLog(@"No username found"); 
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
LoginViewController *loginView = (LoginViewController *) 
[storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"]; 
[self presentViewController:loginView animated:YES completion:nil]; 

這是我的故事板的圖像:

enter image description here

謝謝!

+2

你寫的viewDidLoad代碼? – Impossible 2013-05-06 09:24:28

+0

我有同樣的問題,我叫ViewDidLoad中的方法,如果你也請嘗試在viewDidAppear:並檢查? – Buntylm 2013-05-06 09:26:26

+1

您必須添加故事板中seques之間的關係鏈接。 – chandu 2013-05-06 09:26:38

回答

4

如果您嘗試在ViewDidload中顯示視圖,則會產生錯誤。

如果你想使用它,你可以使用performselector而不是在延遲時間調用這段代碼。

+0

我確實在viewDidload中有它,讓我試着將它移動到ViewDidAppear。 – KingPolygon 2013-05-06 09:51:27

+0

是的,你也可以嘗試[self performSelector:@selector(Test)withObject:nil afterDelay:0.5]; – Impossible 2013-05-06 09:52:52

0

如果您有此代碼可以在viewDidLoad方法中顯示模態視圖控制器。然後將其移至viewDidAppear:方法。

0

我想,也把它變成註釋您調用的函數爲ViewDidLoad: 我有我在那裏試圖呈現modalViewController與在viewDidLoad:方法的問題。 後來我搬到功能分爲ViewDidAppear: 和一個另一件事來解決,我們可以使用performselector

viewcontroller's的觀點是不是在windowhierarchy在它已經加載 點(發送時viewDidLoad消息)但它在呈現之後處於窗口層次結構中(發送viewDidAppear:消息時)。

+0

DownVoter熱烈歡迎您,但請遵守規則,並首先發表評論。 – Buntylm 2013-05-06 09:39:18

0

您將.m文件中的「loginView」聲明爲全局.h或.m文件中的擴展名並將其合成。

@property(strong, nonatomic)LoginViewController *loginView; 

這將解決您的問題:)