【问题标题】:Swift 3 Attempt to present whose view is not in the window hierarchySwift 3 尝试呈现其视图不在窗口层次结构中
【发布时间】: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!")
    })

【问题讨论】:

标签: ios swift xcode


【解决方案1】:

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

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

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

【讨论】:

  • 您可以做的另一件事是将根视图控制器设置为 navigationController,这是一种更好的方法,在我的情况下有助于避免内存泄漏。
猜你喜欢
  • 2017-07-27
  • 1970-01-01
  • 2014-06-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 2016-03-26
  • 2018-06-06
相关资源
最近更新 更多