【发布时间】: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 来自callSecondOtherVC 和HomeViewController 是原样。
我应该如何订购 VC?如果有人能进一步解释视图层次结构,我将不胜感激。
【问题讨论】:
-
我想stackoverflow.com/questions/6872852/… 会回答你的问题;有几种方法可以解决 pop-then-push 问题。
标签: ios swift uiviewcontroller