呈现模态视图总是失败

Posted

技术标签:

【中文标题】呈现模态视图总是失败【英文标题】:Presenting Modal View Keeps on Failing 【发布时间】:2013-05-06 09:23:46 【问题描述】:

我不断收到此警告,无论我尝试什么,我都不确定如何解决它。

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];

这是我的故事板的图片:

谢谢!!!

【问题讨论】:

你在ViewDidload中写过这段代码吗? 我遇到了同样的问题,我在 ViewDidLoad 中调用了方法,如果你也是,请在 viewDidAppear 中尝试:并检查? 你必须在storyboard中添加seques之间的关系链接。 实际上代码的放置也可能是一个问题,因为视图控制器的视图在调用 ViewDidAppear:methood 之前不在窗口层次结构中 DownVoter 热烈欢迎您,但请遵守规则将评论放在我的回答前面? 【参考方案1】:

如果您尝试在ViewDidload 中显示视图,则会产生错误。

如果您想使用它,则可以使用 performselector 并延迟调用此代码。

【讨论】:

我确实在 viewDidload 中有它,让我尝试将它移动到 ViewDidAppear。 是的,你也可以尝试 [self performSelector:@selector(Test) withObject:nil afterDelay:0.5];【参考方案2】:

如果您有此代码以在viewDidLoad 方法中呈现模态视图控制器。然后将其移至viewDidAppear: 方法。

【讨论】:

【参考方案3】:

您在给定的 .h 或 .m 文件中的扩展名中将“loginView”声明为全局并对其进行综合。

@property(strong, nonatomic)LoginViewController *loginView;

它会解决你的问题:)

【讨论】:

以上是关于呈现模态视图总是失败的主要内容,如果未能解决你的问题,请参考以下文章

从模态视图呈现视图控制器给出错误

横向模式下的导航控制器堆栈,但总是以纵向帧大小模态呈现视图控制器视图

关闭模态呈现的 ViewController 总是让我回到根目录

总是以模态的方式呈现

呈现其视图控制器时笔尖加载失败

iOS Swift:呈现的视图控制器为零