[IOS] NavigationBar의 Back 버튼에 대한 이벤트를 받고 처리 UINavigationControllerDelegate
iOS에서 NavigationBar의 “Back” 버튼에 대한 이벤트를 받고 처리하기 위해서는 UINavigationControllerDelegate
프로토콜을 사용하여 Navigation Controller의 delegate를 설정해야 합니다. 다음은 이를 수행하는 방법입니다:
- ViewController에
UINavigationControllerDelegate
프로토콜을 채택합니다. 클래스 선언 부분에UINavigationControllerDelegate
를 추가합니다.
class YourViewController: UIViewController, UINavigationControllerDelegate {
// ...
}
- ViewController의 viewDidLoad() 메서드에서 Navigation Controller의 delegate를 설정합니다.
override func viewDidLoad() {
super.viewDidLoad()
// ...
navigationController?.delegate = self
}
- ViewController에 다음의
navigationController(_:willShow:animated:)
메서드를 구현합니다. 이 메서드는 Navigation Controller에서 다른 ViewController로 전환되기 직전에 호출됩니다.
func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
if viewController == self.navigationController?.viewControllers.first {
// 현재 ViewController가 Root ViewController인 경우 "Back" 버튼이 눌렸음을 의미합니다.
// 여기에서 원하는 동작을 수행하세요.
}
}
위 코드에서는 현재 ViewController가 Root ViewController인 경우 “Back” 버튼이 눌렸을 때 원하는 동작을 수행하도록 설정했습니다. “Back” 버튼에 대한 이벤트를 처리하려면 해당 부분에 원하는 코드를 추가하면 됩니다.