【问题标题】: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()
        }

【问题讨论】:

    标签: ios swift segue


    【解决方案1】:

    问题来了

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-07
      • 1970-01-01
      • 2013-02-23
      • 2017-07-18
      • 2014-11-19
      • 2016-09-19
      • 1970-01-01
      • 2014-06-01
      相关资源
      最近更新 更多