【发布时间】:2020-01-06 11:34:47
【问题描述】:
我们有 Router 类将 viewController 导航到另一个视图控制器,它按预期工作,但是当 viewControllersStack 随机变为 nil 并发生崩溃时。我们尝试使用“if let”来避免崩溃,但这里的问题是当 viewControllersStack 为 nil 时出现黑屏。所以我们把它恢复了。如果导航为 nil,您能否建议为什么导航堆栈为 nil 如何处理?
private func PopOrPushToViewController(_ strControllerClass: String) {
//get the list of controllers in the stack
let viewControllersStack: [UIViewController] = self.navigationController!.viewControllers as [UIViewController]
var boolDidNaviagtion = false
for viewController in viewControllersStack {
if boolDidNaviagtion {
viewController.removeFromParent()
}
if String(describing: type(of: viewController)) == strControllerClass {
boolDidNaviagtion = true
self.navigationController?.popToViewController(viewController, animated: true)
}
}
if !boolDidNaviagtion {
let viewController = NavigationController.sharedInstance.storyboardViewControllerFromString(strControllerClass)!
self.navigationController!.pushViewController(viewController, animated: true)
}
}
class AddTripViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func navigate(_ sender: Any) {
popOrPushToViewController( "ListViewController")
}
}
【问题讨论】:
标签: ios swift xcode navigation pushviewcontroller