获取当前控制器
+ (UIViewController*)currentViewController {
UIViewController* vc = [UIApplication sharedApplication].keyWindow.rootViewController;
while (1) {
if ([vc isKindOfClass:[UITabBarController class]]) {
vc = ((UITabBarController*)vc).selectedViewController;
}
if ([vc isKindOfClass:[UINavigationController class]]) {
vc = ((UINavigationController*)vc).visibleViewController;
}
if (vc.presentedViewController) {
vc = vc.presentedViewController;
}else{
break;
}
}
return vc;
}
获取顶层控制器
- (UIViewController *)appRootViewController {
UIViewController *RootVC = [UIApplication sharedApplication].keyWindow.rootViewController;
UIViewController *topVC = RootVC;
while (topVC.presentedViewController) {
topVC = topVC.presentedViewController;
}
return topVC;
}
本文提供了一种在Swift中获取当前活动控制器及应用顶层控制器的方法。通过递归检查,可以穿透导航控制器、标签控制器及模态呈现的控制器,找到实际显示在屏幕上的视图控制器。
1352

被折叠的 条评论
为什么被折叠?



