您好,欢迎来到伴沃教育。
搜索
您的当前位置:首页Object - C 获取最顶层控制器

Object - C 获取最顶层控制器

来源:伴沃教育

.h文件

 #import <UIKit/UIKit.h>
@interface UIApplication (ActivityViewController)
- (UIViewController *)activityViewController;
@end

.m文件

#import "UIApplication+ActivityViewController.h"
@implementation UIApplication (ActivityViewController)
- (UIViewController *)activityViewController {
__block UIWindow *normalWindow = [self.delegate window];
if (normalWindow.windowLevel != UIWindowLevelNormal) {
    [self.windows enumerateObjectsUsingBlock:^(__kindof UIWindow * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        if (obj.windowLevel == UIWindowLevelNormal) {
            normalWindow = obj;
            *stop        = YES;
        }
    }];
}

return [self p_nextTopForViewController:normalWindow.rootViewController];
}


- (UIViewController *)p_nextTopForViewController:(UIViewController *)inViewController {
while (inViewController.presentedViewController) {
//        NSLog(@"-- 1 --->>>>%@",NSStringFromClass(inViewController.class));
    inViewController = inViewController.presentedViewController;
//        NSLog(@"-- 2 --->>>>%@",NSStringFromClass(inViewController.class));
}

if ([inViewController isKindOfClass:[UITabBarController class]]) {
    UIViewController *selectedVC = [self p_nextTopForViewController:((UITabBarController *)inViewController).selectedViewController];
    return selectedVC;
} else if ([inViewController isKindOfClass:[UINavigationController class]]) {
    UIViewController *selectedVC = [self p_nextTopForViewController:((UINavigationController *)inViewController).visibleViewController];
    return selectedVC;
} else {
    return inViewController;
}
}
@end

Copyright © 2019- bangwoyixia.com 版权所有 湘ICP备2023022004号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务