如何解决此错误“警告:尝试呈现其视图不在窗口层次结构中”?

Posted

技术标签:

【中文标题】如何解决此错误“警告:尝试呈现其视图不在窗口层次结构中”?【英文标题】:How to solve this error "Warning:Attempt to present whose view is not in the window hirearchy"? 【发布时间】:2019-05-18 18:44:57 【问题描述】:

我正在开发一个 ios 应用程序,但我没有情节提要,并且我执行纯 swift 代码,当我尝试检查 MainViewController 中的身份验证并使用 perform 转到另一个 ViewController如果令牌不存在,则 MainViewController 中的显示按钮我遇到了这个警告,它将不起作用。

当我使用 perform(如下面的 sn-p)通过单击按钮转到另一个 ViewController 时,它工作得很好。

我已经看到了我在这里问的标题的所有答案,但是所有示例都有故事板,所以它与我在这里的问题无关。

这是我尝试在我的应用中执行的 sn-p。


if defaults.string(forKey: Constants().userTokenKey) != nil
            && defaults.string(forKey: Constants().userTokenKey) != ""  
            print("YOU ARE IN ELSE!")
            let vc = SelectLocationOnMapViewController()
            UIApplication.topViewController()?.present(vc, animated: true, completion: nil)
         else 
            UIView.animate(withDuration: 1, animations: 
                self.loginRegisterParentView.alpha = 1.0
            )
            setButtonActions()
        

【问题讨论】:

【参考方案1】:

问题来了

UIApplication.topViewController()?.present(vc, animated: true, completion: nil)

您似乎使用尚未完全呈现的 rootVC 来呈现另一个 Vc ,您需要将此代码从 viewDidLoad 移至 viewWillAppear/viewDidAppear

【讨论】:

以上是关于如何解决此错误“警告:尝试呈现其视图不在窗口层次结构中”?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决此科尔多瓦构建错误?

如何解决颤振中的 build.gradle 错误。如何解决此错误“评估项目 ':app' 时出现问题。> 格式错误的 \uxxxx 编码。”

如何解决此解码和语法错误

如何解决此错误“格式错误的 URL”?

创建项目时如何解决此错误?

如何解决此错误格式不正确(无效令牌)