반응형
가장 높은 UIViewController 얻기
뷰 컨트롤러를 푸시하고 / 또는에 모달 뷰 컨트롤러를 표시하는 UINavigationController
경우 가장 높은 것이 무엇인지 어떻게 알 수 UIViewController
있습니까? 또는 제 경우에는 특정 UITableViewController
이 가장 높은지 아닌지 알고 싶습니다 .
나는 사용해 보았다 :
self.navigationController.topViewController == self
...하지만 이것은 작동하지 않습니다. 나는 그 위에 모달 뷰 컨트롤러를 제시 topViewController
하고 있고 UINavigationController
(모달로 제시된 뷰와는 반대로) 어떤 뷰가 푸시되었는지를 추적 하기 때문에 실패한다고 생각합니다 .
원하는 visibleViewController
:
현재 표시되는 뷰는 탐색 스택의 맨 위에있는 뷰 컨트롤러 또는 모달로 제공된 뷰 컨트롤러에 속할 수 있습니다.
NSArray *viewContrlls=[[self navigationController] viewControllers];
[viewContrlls lastObject];
질문이 오래되었다는 것을 알고 있지만 여전히 인기가 있습니다. 그래서 다른 UIViewController's
하위 클래스 를 처리하는 최고의 솔루션을 게시하고 싶습니다 . 동시에 사이드 메뉴와 같은 사용자 지정 "컬렉션"컨트롤러를 통해이 메서드의 기능을 확장 할 수 있습니다.
extension UIWindow {
var visibleViewController: UIViewController? {
guard let rootViewController = rootViewController else {
return nil
}
return visibleViewController(for: rootViewController)
}
private func visibleViewController(for controller: UIViewController) -> UIViewController {
var nextOnStackViewController: UIViewController? = nil
if let presented = controller.presentedViewController {
nextOnStackViewController = presented
} else if let navigationController = controller as? UINavigationController,
let visible = navigationController.visibleViewController {
nextOnStackViewController = visible
} else if let tabBarController = controller as? UITabBarController,
let visible = (tabBarController.selectedViewController ??
tabBarController.presentedViewController) {
nextOnStackViewController = visible
}
if let nextOnStackViewController = nextOnStackViewController {
return visibleViewController(for: nextOnStackViewController)
} else {
return controller
}
}
}
참조 URL : https://stackoverflow.com/questions/4067692/getting-the-top-most-uiviewcontroller
반응형
'IT TIP' 카테고리의 다른 글
Android에서 TextView의 색상을 설정하는 방법은 무엇입니까? (0) | 2021.01.06 |
---|---|
PowerShell의 스위치 매개 변수와 같은 열거 형 (0) | 2021.01.06 |
dir 이름에 공백이있는 루프 용 배치 파일 (0) | 2021.01.06 |
CSS 비 래핑 플로팅 div (0) | 2021.01.06 |
Windows의 MinGW에서 GCC를 업데이트하는 방법은 무엇입니까? (0) | 2021.01.06 |