呈现模态视图总是失败
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;
它会解决你的问题:)
【讨论】:
以上是关于呈现模态视图总是失败的主要内容,如果未能解决你的问题,请参考以下文章
横向模式下的导航控制器堆栈,但总是以纵向帧大小模态呈现视图控制器视图