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)
}
}
这是我的演示的第一控制器,并在控制台:UINavigationControllerDelegate的didShowViewController方法被调用两次
sss
showViewController
showViewController
的“didShowViewController”被称为两次。 我不确定发生了什么
----------------- some test ------------------ ----
我在控制器的这些方法中添加一些日志:的loadView,viewDidLoad中,viewWillAppear中,viewDidAppear,和这些日志的顺序是:
loadView
viewDidLoad
viewWillAppear
will:<NaviDemo.ViewController: 0x7fe8c9533050>
<NaviDemo.ViewController: 0x7fe8c9533050>
viewDidAppear
<NaviDemo.ViewController: 0x7fe8c9533050>
谢谢你,我试过你的建议, 控制台 ,它打印相同的实例两次 –
为什么被称为两次的方法? @James Zaghini –