[iOS] Navigation Swipe-Back

김범수·2022년 6월 2일
0

iOS

목록 보기
3/8

Navigation Swipe-Back


Storyboard를 사용해 Segue로 연결하는 방식으로 프로젝트를 진행할 경우 기본적으로 Swipe-back 기능이 구현되어 있지만 Code base로 Layout을 짜거나 Storyboard를 분리하여 segue 연결을 따로 하기 resouce가 많이 드는 경우에는 따로 구현해주어야한다

extension UINavigationController: ObservableObject, UIGestureRecognizerDelegate {
    override open func viewDidLoad() {
        super.viewDidLoad()
        interactivePopGestureRecognizer?.delegate = self
    }

    public func gestureRecognizerShouldBegin(_: UIGestureRecognizer) -> Bool {
        return viewControllers.count > 1
    }
}

Swipe-back 구현 코드는 매우 간단하다.
UINavigationController Extension에 interactivePopGestureRecognizer delegate를 설정해주고 gestureRecognizerShouldBegin 함수 내에서 화면 hierachy에 맞는 조건을 설정해주면 된다

만약 navigationBar.isHidden같은 코드가 중복적으로 사용되고 있다면 아래처럼 extension에 한 줄만 추가해주면 많은 중복 코드를 줄일 수 있다

extension UINavigationController: ObservableObject, UIGestureRecognizerDelegate {
    override open func viewDidLoad() {
        super.viewDidLoad()
navigationBar.isHidden = true
        interactivePopGestureRecognizer?.delegate = self
    }

    public func gestureRecognizerShouldBegin(_: UIGestureRecognizer) -> Bool {
        return viewControllers.count > 1
    }
}
profile
iOS Developer

0개의 댓글