ios - 如何解决此错误 "Warning:Attempt to present whose view is not in the window hirearchy"?

标签 ios swift segue

我正在开发一个 iOS 应用程序,但我没有 Storyboard,我做的是纯 swift 代码,当我尝试检查 MainViewController 中的身份验证时,我使用 perform 转到另一个 ViewController如果 token 在 MainViewController 中不存在显示按钮,我会遇到此警告并且它不会工作。

当我像下面的代码片段一样使用执行通过单击按钮转到另一个 ViewController 时,它工作得很好。

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

这是我尝试在我的应用中做的一个片段。


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()
        }

最佳答案

问题就在这里

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

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

关于ios - 如何解决此错误 "Warning:Attempt to present whose view is not in the window hirearchy"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56201901/

相关文章:

swift - 如何快速访问复杂的结构化数据?

ios - 将两个变量传递给同一个 View Controller swift

swift - swift 启动 segue 的问题

ios - 如何在 Swift 中获取事件的源(发件人)

ios - 如何获取本地文件的 MIMETYPE?

ios - 什么样的图像应该进入 cocos2d ios 应用程序的 spritesheet 中?

ios - 代码 : reasons for not using Core Data?

ios - 如何在动画期间使按钮处于非事件状态

ios - 对 segue 源 View Controller 的引用

ios - 将 iphone 视频发送到服务器