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)
}
}
questo è il primo controller del mio demo, e in consolle:metodo didShowViewController di UINavigationControllerDelegate è stato chiamato due volte
sss
showViewController
showViewController
il "didShowViewController" è stato chiamato due volte. Non so cosa sta succedendo
----------------- alcuni test ------------------ ----
aggiungo un po 'di log in queste modalità di controllo: loadview, viewDidLoad, viewWillAppear, viewDidAppear, e l'ordine di questi log è:
loadView
viewDidLoad
viewWillAppear
will:<NaviDemo.ViewController: 0x7fe8c9533050>
<NaviDemo.ViewController: 0x7fe8c9533050>
viewDidAppear
<NaviDemo.ViewController: 0x7fe8c9533050>
grazie, avevo cercato il tuo suggeriscono, in consolle, stampa la stessa istanza due volte –
perché è il metodo chiamato due volte? @James Zaghini –