概要
UINavigationControllerの戻るイベントを検知したい時があるかと思います。
そんな時のために戻るイベントの取得方法を紹介します。
環境
Xcode 12.5
Swift 5.4
macOS Big Sur 11.4
実装
戻るイベントを取得する方法としてdeinitやviewDidDisappearを使う方法もありますが、これらは画面を離れる際に呼び出されるだけで戻るボタン押下で呼び出されるわけではありません。
厳密に戻イベントを取得するにはleftBarButtonItemをカスタムするのが一番かと思います。
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.leftBarButtonItem = UIBarButtonItem(title: "戻る", style: UIBarButtonItem.Style.plain, target: self, action:#selector(self.back))
}
@objc private func back(_ sender: Any) {
print("ここで戻るボタン押下時処理を行います")
navigationController?.popViewController(animated: true)
}