我有以下类:
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
来自callSecondOtherVC
,HomeViewController
原样。
我应该如何订购VC?如果有人可以更多地解释视图层次结构,我将不胜感激。
我认为你需要做的是从viewDidAppear而不是viewDidLoad调用你的方法。这样做的原因是,在 viewDidLoad 时,视图不在视图层次结构中。