[IOS] Back 버튼으로 이전 화면으로 가지 않도록 하려면 UINavigationControllerDelegate
iOS에서 “Back” 버튼으로 이전 화면으로 가지 않도록 하려면 UINavigationControllerDelegate
프로토콜의 navigationController(_:willShow:animated:)
메서드를 사용하여 이전 화면으로의 전환을 막을 수 있습니다. 다음은 해당 방법을 설명하는 예시 코드입니다:
- 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.interactivePopGestureRecognizer?.isEnabled = false
} else {
// 이전 화면으로의 전환을 허용합니다.
navigationController.interactivePopGestureRecognizer?.isEnabled = true
}
}
위 코드에서는 현재 ViewController가 루트 뷰 컨트롤러인 경우에만 “Back” 버튼을 비활성화하도록 설정했습니다. navigationController.interactivePopGestureRecognizer?.isEnabled
를 false
로 설정하여 사용자가 “Back” 버튼을 눌러도 이전 화면으로 전환되지 않도록 막을 수 있습니다.
위 코드를 사용하면 “Back” 버튼으로 인한 이전 화면 전환을 제어할 수 있습니다.