Swift 3 尝试呈现其视图不在窗口层次结构中

Posted

技术标签:

【中文标题】Swift 3 尝试呈现其视图不在窗口层次结构中【英文标题】:Swift 3 Attempt to present whose view is not in the window hierarchy 【发布时间】:2017-09-18 11:24:20 【问题描述】:

这个问题已经被问过很多次了,但即使在尝试了大部分可能的事情之后,我仍然无法找到适合我的解决方案。 这是错误消息。

警告:尝试在 上显示其视图不在窗口层次结构中!

注意:我没有使用任何导航控制器。

我只是以模态方式展示一个视图控制器,并且我有一个用于链接注册的按钮。但是每次我点击linkedin按钮时都会出现这个错误,我看不到新的linkedIn对话框,尽管它在其他类中工作正常。

大多数解决方案建议在 viewDidAppear 中处理按钮点击,但已经尝试过,但它不起作用。

我正在使用此代码打开linkedIn 注册表单

linkedinHelper.authorizeSuccess( [unowned self] (lsToken) -> Void in

        print("success lsToken: \(lsToken)")
        self.requestProfile()
        , error:  [unowned self] (error) -> Void in

            print("Encounter error: \(error.localizedDescription)")
        , cancel:  [unowned self] () -> Void in

            print("User Cancelled!")
    )

【问题讨论】:

whose view is not in the window hierarchy的可能重复 试试这个***.com/a/45347998/4601900 它不是重复的。我的问题集中在模态呈现上,我已经尝试过上述解决方案,但它对我不起作用。 能否添加一些代码 如果您使用的是linkedin lib,可能是导致问题的原因 【参考方案1】:

我已经解决了这个问题,主要问题正是它所说的视图不在视图层次结构中。为了解决这个问题,我们需要使用 appDelegate 对象将根视图控制器设置为当前视图控制器。这样视图现在进入视图层次结构并能够呈现更多视图。这是代码

let initialViewController = UIStoryboard(name: "Main", bundle:nil).instantiateInitialViewController() as UIViewController
let appDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
appDelegate.window?.rootViewController = initialViewController

请阅读此内容以获取更多信息。 https://***.com/a/27608804/5123516

【讨论】:

您可以做的另一件事是将根视图控制器设置为 navigationController,这是一种更好的方法,在我的情况下有助于避免内存泄漏。

以上是关于Swift 3 尝试呈现其视图不在窗口层次结构中的主要内容,如果未能解决你的问题,请参考以下文章

警告:尝试在其视图不在窗口层次结构中的 * 上呈现 * - swift

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

尝试呈现其视图不在视图层次结构中的 UITabBarController - Firebase,Swift

尝试呈现 * 其视图不在窗口层次结构中

swift 3 present from appdelegate 错误:警告:尝试显示〜其视图不在窗口层次结构中

尝试在其视图不在窗口层次结构中的 UIViewController 上呈现 UIViewController