【问题标题】:I got this warning "attempt to present ViewController whose view is not in the window hierarchy" when I try to present a view当我尝试呈现视图时,我收到此警告“尝试呈现其视图不在窗口层次结构中的 ViewController”
【发布时间】:2016-09-19 23:17:26
【问题描述】:

我的视图层次如下图所示:

我的问题是我想在单击 VC3 上的任何按钮时显示 VC1。这是我的代码

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("registerNavigation")
self.presentViewController(vc, animated: false, completion: nil)

但我收到此警告“警告:尝试呈现其视图不在窗口层次结构中的 ViewController”,但没有任何反应。请告诉我,我做错了什么?

【问题讨论】:

  • 您好,亲爱的,请看一下这个article,希望这能彻底解决您的问题并了解您收到的警告的根源..

标签: ios swift warnings modalviewcontroller


【解决方案1】:

如果你想从 VC3 显示 VC1,你不需要再次显示它,因为它已经加载到导航堆栈中。你只需要dismiss or pop VC3 和 VC2 从导航堆栈。如果您已提交,则关闭它,如果您已推送,则将其弹出。

您的警告的含义:您正在尝试呈现位于导航控制器 1 的视图层次结构中但不在导航控制器 2 的视图层次结构中的内容。!!

希望这会有所帮助:)

【讨论】:

  • 它就像魔术一样工作。我只是将其关闭,它会显示 VC1。谢谢你。你拯救了我的一天。
【解决方案2】:

您正在向 navigationController 演示,因此请使用如下代码。

let VC1 = self.storyboard!.instantiateViewControllerWithIdentifier("registerNavigation") as! ViewController
let navController = UINavigationController(rootViewController: VC1)
self.presentViewController(navController, animated:true, completion: nil)

【讨论】:

  • 当我尝试使用您的代码时出现此错误“由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'不支持推送导航控制器'”
猜你喜欢
  • 2013-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-07
  • 1970-01-01
  • 1970-01-01
  • 2019-12-25
  • 1970-01-01
相关资源
最近更新 更多