[swift] 모달과 네비게이션 뷰 뒤로 취소 또는 끌 때의 동작을 조절하는 방법은?

iOS 앱에서 모달 또는 네비게이션 뷰를 사용할 때 사용자가 뷰를 끌거나 뒤로가기를 할 때의 동작을 조절하고 싶을 수 있습니다. 이를 통해 앱의 사용자 경험을 개선할 수 있습니다.

모달 뷰에서의 뒤로가기 동작 제어하기

모달 뷰에서 사용자가 뒤로가기를 했을 때의 동작을 조절하는 방법은 다음과 같습니다.

class ModalViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dismissModal))
        tapGestureRecognizer.cancelsTouchesInView = false
        view.addGestureRecognizer(tapGestureRecognizer)
    }

    @objc func dismissModal() {
        dismiss(animated: true, completion: nil)
        // 원하는 작업 수행
    }
}

모달 뷰에서 사용자가 뷰를 끌어서 dismiss 할 때의 동작을 조절하기 위해 UIGestureRecognizer를 사용하여 뷰의 바깥 부분을 터치했을 때 dismiss 동작을 수행할 수 있습니다.

네비게이션 뷰에서의 뒤로가기 동작 제어하기

네비게이션 뷰에서 사용자가 뒤로가기를 했을 때의 동작을 조절하는 방법은 다음과 같습니다.

class NavigationViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        navigationItem.hidesBackButton = true
        let newBackButton = UIBarButtonItem(title: "Custom", style: .plain, target: self, action: #selector(back))
        navigationItem.leftBarButtonItem = newBackButton
    }

    @objc func back(sender: UIBarButtonItem) {
        // 원하는 작업 수행
        self.navigationController?.popViewController(animated: true)
    }
}

네비게이션 뷰에서 기본 뒤로가기 버튼을 숨기고 새로운 뒤로가기 버튼을 추가하여 원하는 동작을 수행하도록 할 수 있습니다.

결론

모달 및 네비게이션 뷰에서의 뒤로가기 또는 끌기 동작을 조절하는 방법에 대해 알아보았습니다. 이를 통해 앱의 사용자 경험을 개선하고 사용자의 편의성을 높일 수 있습니다.

더 많은 정보는 iOS 공식 문서를 참고하세요.