본문 바로가기
IOS/IOS 스터디(Swift)

Swift, iOS] 현재 존재하는 뷰 컨트롤러 확인하기.

by 김마리님 2023. 10. 18.

개발을 하다보면 현재 살아있는 뷰 컨트롤러를 확인해야할 때가 있다.

이를 확인하는 function이다.

 

    
    func findAllViewControllers() -> [UIViewController] {
        var allViewControllers: [UIViewController] = []
        
        // 재귀적으로 모든 뷰 컨트롤러를 탐색
        func findControllers(from viewController: UIViewController) {
            allViewControllers.append(viewController)
            
            if let navigationController = viewController as? UINavigationController {
                for childViewController in navigationController.viewControllers {
                    findControllers(from: childViewController)
                }
            }
            
            if let tabBarController = viewController as? UITabBarController {
                if let selectedViewController = tabBarController.selectedViewController {
                    findControllers(from: selectedViewController)
                }
            }
            
            if let presentedViewController = viewController.presentedViewController {
                findControllers(from: presentedViewController)
            }
        }
        
        if let rootViewController = UIApplication.shared.keyWindow?.rootViewController {
            findControllers(from: rootViewController)
        }
        
        return allViewControllers
    }

 

 

이를 사용하는 방식은 다음과 같다

 

    func testFunction() {
        
        ...
        
        if !self.moveBackground {
            
            ...
            
            if(UIApplication.shared.keyWindow?.rootViewController != nil) {
            
                ...
                
                var allView = findAllViewControllers()
                for view in allView {
                    ILog.debug(tag: #file, content: "viewController ? \(view)")
                }
                
            } 
        } 

        ...
        
    }
반응형