【发布时间】:2015-12-25 09:05:41
【问题描述】:
class ViewController: UIViewController, UINavigationControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
navigationController!.delegate = self
}
func navigationController(navigationController: UINavigationController, didShowViewController viewController: UIViewController, animated: Bool) {
print("showViewController")
}
func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {
print("sss")
}
func update() {
let vc = SecondViewController()
navigationController!.pushViewController(vc, animated: true)
}
}
这是我演示的第一个控制器,在控制台中:
sss
showViewController
showViewController
“didShowViewController”被调用了两次。 不知道怎么回事
------一些测试----------
我在控制器的这些方法中添加了一些日志: loadView,viewDidLoad ,viewWillAppear,viewDidAppear ,这些日志的顺序是:
loadView
viewDidLoad
viewWillAppear
will:<NaviDemo.ViewController: 0x7fe8c9533050>
<NaviDemo.ViewController: 0x7fe8c9533050>
viewDidAppear
<NaviDemo.ViewController: 0x7fe8c9533050>
【问题讨论】:
-
我已经更新了 iOS 13 的解决方案检查 stackoverflow.com/a/58169169/7332815
标签: ios swift uinavigationcontroller