2013-05-06 75 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; 

这将解决您的问题:)

相关问题