你好,我有导航堆栈(Flow(,顶部可见视图控制器是M
- 我正在创建另一个带有视图控制器A的新导航控制器N。
- 现在在M上呈现N
- 在A中推送视图控制器B(自我导航控制器(
推送不起作用,并且在现有过渡或演示发生时出现错误;导航堆栈不会仅在 iOS 11 中更新。 谢谢
您提到的内容不应造成问题。但下面提到的不会肯定地抛出你提到的内容。
将推送 B 添加到模式演示的完成块中的 N 个代码中
present(N, animated: true) { [weak self]
N.pushViewController(B, animated: true)
}
您没有正确遵循导航结构。
从视图控制器M中,您需要像这样呈现导航控制器N:
self.navigationController?.present(navN, animated: true, completion: nil)
这里 self 是视图控制器M,navN是新的导航控制器。
通过这样做,它将打开视图控制器 A,您需要从这里推送到视图控制器 B:
self.navigationController?.pushViewController(VCb, animated: true)
Self 是视图控制器A,VCb是新的视图控制器 B。
Swift3/Swift 4
首先,您需要设置要在其上演示的导航控制器。之后,在第二个视图控制器上执行导航过程。
像这样的例子
let firstPresentVC = FirstVC(nibName:"FirstVC",bundle:nil) let navVC = UINavigationController(rootViewController:firstPresentVC) navVC.isNavigationBarHidden = true self.present(navVC, animated: true, completion:nil)
现在您在带有导航的当前堆栈上
之后你可以推
let secondPushVC = secondPushVC(nibName:"secondPushVC",bundle:nil)
self.navigationController?.pushViewController(secondPushVC, animated: true)