[IOS] UINavigationBarDelegate 를 사용하여 뒤로가기 동작 막는 방법
UINavigationBarDelegate 를 사용하기 위해서는 해당 UINavigationBar
의 delegate를 설정해야 합니다. UINavigationBar
는 기본적으로 UINavigationController
에서 관리되는데, 따라서 UINavigationControllerDelegate
를 사용하여 UINavigationController
의 delegate를 설정해야 합니다.
다음은 UINavigationControllerDelegate
를 사용하여 UINavigationBarDelegate
에 delegate를 설정하는 방법입니다:
UINavigationControllerDelegate
프로토콜을 채택한 뒤, 해당 ViewController에 delegate를 설정합니다. ViewController 클래스 선언 부분에UINavigationControllerDelegate
를 추가합니다.
class YourViewController: UIViewController, UINavigationControllerDelegate {
// ...
}
viewDidLoad()
에서UINavigationController
의 delegate를 현재 ViewController로 설정합니다.
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.delegate = self
}
UINavigationBarDelegate
메서드를 구현하여 원하는 동작을 수행합니다.
func navigationBar(_ navigationBar: UINavigationBar, shouldPop item: UINavigationItem) -> Bool {
// 뒤로가기 동작을 막고자 할 때 필요한 로직을 구현합니다.
return false
}
위의 예시에서는 UINavigationControllerDelegate
프로토콜을 채택하고, viewDidLoad()
에서 navigationController?.delegate
를 현재 ViewController로 설정합니다. 그리고 navigationBar(_:shouldPop:)
메서드를 구현하여 뒤로가기 동작을 막고자 할 때 필요한 로직을 작성합니다.
이제 ViewController의 UINavigationBarDelegate
메서드를 사용하여 UINavigationBar
의 동작을 커스터마이즈할 수 있게 되었습니다.