显示视图控制器时出现视图层次结构错误



我有以下类:

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()因为我需要从视图控制器调用相同的函数callOtherVC。基本上,ViewController 中的模型发生了变化,但我本质上是从函数调用相同的 UINavigationController callOtherVC

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

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

UINavigationController来自callSecondOtherVCHomeViewController原样。

我应该如何订购VC?如果有人可以更多地解释视图层次结构,我将不胜感激。

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

最新更新