iOS/Tip

현재 UIViewController이 Modal인지 확인

까칠코더 2022. 12. 8. 22:03
반응형

현재 UIViewController이 present를 이용해서 Modal방식인지 아니면 push 된 것인지 확인하기 위해서는 다음과 같이 extension을 사용하면 편리합니다.

extension UIViewController {
    /// 현재 뷰 컨트롤러가 Modal (presented) 여부 (true = presented, false = pushed)
    var isModal: Bool {
        if let index = navigationController?.viewControllers.firstIndex(of: self), index > 0 {
            return false
        } else if presentingViewController != nil {
            return true
        } else if navigationController?.presentingViewController?.presentedViewController == navigationController {
            return true
        } else if tabBarController?.presentingViewController is UITabBarController {
            return true
        } else {
            return false
        }
    }
}

 

이를 활용해서 화면을 닫을때 다음과 같이 사용하면 됩니다.

func close() {
    if isModal {
        dismiss(animated: true)
    } else {
        navigationController?.popViewController(animated: true)
    }
}
반응형