iOS开发 获取当前控制器
Posted wuwuFQ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS开发 获取当前控制器相关的知识,希望对你有一定的参考价值。
首先创建一个工具类,实现方法都是类方法
获取当前UIViewController
//获取当前控制器
+ (UIViewController*)currentViewController {
return [self currentViewControllerWithRootViewController:[self getKeyWindow].rootViewController];
}
//获取KeyWindow
+ (UIWindow *)getKeyWindow {
if (@available(ios 13.0, *)) {
for (UIWindowScene* windowScene in [UIApplication sharedApplication].connectedScenes) {
if (windowScene.activationState == UISceneActivationStateForegroundActive) {
for (UIWindow *window in windowScene.windows) {
if (window.isKeyWindow) {
return window;
break;
}
}
}
}
}
else {
return [UIApplication sharedApplication].keyWindow;
}
return nil;
}
+ (UIViewController*)currentViewControllerWithRootViewController:(UIViewController*)rootViewController {
if (rootViewController.presentedViewController) {
UIViewController* presentedViewController = rootViewController.presentedViewController;
return [self currentViewControllerWithRootViewController:presentedViewController];
} else if ([rootViewController isKindOfClass:[UINavigationController class]]) {
UINavigationController* navigationController = (UINavigationController*)rootViewController;
return [self currentViewControllerWithRootViewController:navigationController.visibleViewController];
} else if ([rootViewController isKindOfClass:[UITabBarController class]]) {
UITabBarController *tabBarController = (UITabBarController *)rootViewController;
return [self currentViewControllerWithRootViewController:tabBarController.selectedViewController];
} else {
return rootViewController;
}
}
获取view所在的控制器
+ (UIViewController *)viewControllerOfView:(UIView *)view {
// 遍历响应者链。返回第一个找到视图控制器
UIResponder *responder = view;
while ((responder = [responder nextResponder])){
if ([responder isKindOfClass: [UIViewController class]]){
return (UIViewController *)responder;
}
}
// 如果没有找到则返回nil
return nil;
}
以上是关于iOS开发 获取当前控制器的主要内容,如果未能解决你的问题,请参考以下文章
Android 使用两个不同的代码片段获取当前位置 NULL
没有使用 navController.currentDestination?.id 获取当前片段 ID
使用开发工具控制台中的 JavaScript 片段从 HTML 获取 YouTube 播放列表标题和频道名称
iOS开发CGRectGetMidX. CGRectGetMidY.CGRectGetMinY. CGRectGetMaxY. CGRectGetMinX. CGRectGetMaxX的使用(代码片段