在呈现viewcontroller时查看层次结构错误

时间:2016-02-08 07:00:22

标签: ios swift uiviewcontroller

我有以下课程:

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只是另一个viewcontroller。在StepsViewController中,我尝试关闭当前的StepsViewController并显示其他viewcontroller。以下是代码。

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就是这样。

我该如何订购风险投资?如果有人能够更多地解释视图层次结构,我将非常感激。

1 个答案:

答案 0 :(得分:0)

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