개발을 하다보면 현재 살아있는 뷰 컨트롤러를 확인해야할 때가 있다.
이를 확인하는 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)")
}
}
}
...
}
반응형
'IOS > IOS 스터디(Swift)' 카테고리의 다른 글
[iOS / Swift] issue - safeArea가 0.0이 잡히는 문제 (0) | 2023.10.13 |
---|---|
iOS] UITextView의 줄 수 제한, Padding 삭제 (0) | 2023.06.26 |
[Xcodeproj] cocoapods : Unknown object version (56). (RuntimeError) 해결법 (0) | 2023.05.31 |
Swift] TabbarController 사용 시 스토리보드 분리 (0) | 2023.05.31 |
[iOS] FSCalendar, 캘린더 라이브러리(StoryBoard). (0) | 2022.11.24 |