【问题标题】:View hierarchy error while presenting a viewcontroller呈现视图控制器时视图层次结构错误
【发布时间】:2016-02-08 07:00:21
【问题描述】:

我有以下课程:

class HomeViewController: UIViewController {
override func viewdidload() {
   super.viewdidload()
   callOtherVC()
}
   func callOtherVC() {
  let viewController = StepsViewController()
  let rootViewController = UINavigationController(rootViewController: viewController)
  self.presentViewController(rootViewController, animated: true, completion: nil)

}
}

StepsViewController 只是另一个视图控制器。在 StepsViewController 中,我尝试关闭当前的 StepsViewController 并呈现其他视图控制器。以下是代码。

class StepsViewController: UIViewController {
  override func viewdidload() {
   super.viewdidload()
   callSecondOtherVC()
}
 func callSecondOtherVC() {
    let vc = ViewController()
    self.addChildViewController(vc)
    self.parentViewController!.dismissViewControllerAnimated(true, completion: nil)
    vc.callOtherVC()
}
}

我初始化 ViewController() 因为我需要从 ViewController 调用相同的函数 callOtherVC。基本上 ViewController 中的模型会发生变化,但我实际上是从 callOtherVC 函数调用相同的 UINavigationController。

每当我这样做时,都会收到如下错误:\

警告:尝试呈现 (UINavigationController: 0x7d991600) (HomeViewController: 0x7a6e00a0) 其视图不在窗口中 等级制度!

UINavigationController 来自callSecondOtherVCHomeViewController 是原样。

我应该如何订购 VC?如果有人能进一步解释视图层次结构,我将不胜感激。

【问题讨论】:

标签: ios swift uiviewcontroller


【解决方案1】:

我认为你需要在这里做的是从 viewDidAppear 调用你的方法,而不是 viewDidLoad。原因是在 viewDidLoad 时视图不在视图层次结构中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    相关资源
    最近更新 更多