iOS 获取当前最上层ViewController

来源:互联网 发布:写论文的数据在哪里找 编辑:程序博客网 时间:2024/05/21 10:46

iOS 获取当前最上层ViewController

1.使用场景:当我在继承: NSObject 的类里面想Push 到另一个ViewController ,怎么办? 我怎么在NSObject 里拿到 当前ViewController 呢? 直接上代码:

- (UIViewController *)topViewController {    UIViewController *resultVC;    resultVC = [self _topViewController:[[UIApplication sharedApplication].keyWindow rootViewController]];    while (resultVC.presentedViewController) {        resultVC = [self _topViewController:resultVC.presentedViewController];    }    return resultVC;}- (UIViewController *)_topViewController:(UIViewController *)vc {    if ([vc isKindOfClass:[UINavigationController class]]) {        return [self _topViewController:[(UINavigationController *)vc topViewController]];    } else if ([vc isKindOfClass:[UITabBarController class]]) {        return [self _topViewController:[(UITabBarController *)vc selectedViewController]];    } else {        return vc;    }    return nil;}
  1. 那这两个方法怎么调用呢? 在AppDelegate 这里调用是最方便了。
+ (instancetype)sharedAppDelegate;+ (instancetype)sharedAppDelegate{    return [UIApplication sharedApplication].delegate;}
- (void)enterLoginUI;- (void)enterLoginUI {    UIViewController * VC = [self topViewController];    BPLoginViewController * login =    [[BPLoginViewController alloc] init];    [VC presentViewController:login animated:YES completion:nil];    }
原创粉丝点击