본문 바로가기
아이폰 개발/Swift

swift - 최상위 ViewController 구하기

by 인생여희 2021. 8. 10.

 

swift - 최상위 ViewController 구하기

 

    /**
     # getRootViewController
     - Author: k
     - Date:
     - Parameters:
        - vc: rootViewController 혹은 UITapViewController
     - Returns: UIViewController?
     - Note: vc내에서 가장 최상위에 있는 뷰컨트롤러 반환
    */
    public func getRootViewController(vc:UIViewController) ->UIViewController?{

    
        ///[1] 네비게이션 컨트롤러
        if let nc = vc as? UINavigationController {

            if let vcOfnavController = nc.visibleViewController {
                return self.getRootViewController(vc: vcOfnavController)
            }
        
        ///[2] 탭뷰 컨트롤러
        }else if let tc = vc as? UITabBarController {
            
            if let tcOfnavControler = tc.selectedViewController {
                return self.getRootViewController(vc: tcOfnavControler)
            }
            
        ///[3] 뷰 컨트롤러
        }else{
            if let pvc = vc.presentedViewController{
                return self.getRootViewController(vc: pvc)
            }else {
                return vc
            }
        }
        
        return nil
    }