iOS DeveloperiOS学习笔记

获取当前UIViewController,通过UIView获取所

2017-01-12  本文已影响0人  Genie_GY

1、获取当前UIViewController

1.1项目使用 UINavigationController --> UIViewController 结构
+ (UIViewController *)getCurViewController {
    UINavigationController *nav = (UINavigationController *)[UIApplication               sharedApplication].keyWindow.rootViewController;
    NSLog(@"当前ViewController:%@",nav.visibleViewController.class);
    return nav.visibleViewController;
}
1.2项目使用 UITabBarController --> UINavigationController --> UIViewController 结构
+ (UIViewController *)getCurViewController {
    UITabBarController *tabBarController = ((UITabBarController *)[UIApplication     sharedApplication].keyWindow.rootViewController);
    UINavigationController *nav = tabBarController.selectedViewController;
    NSLog(@"当前ViewController:%@",nav.visibleViewController.class);
    return nav.visibleViewController;
}
1.3获取present出来的ViewController
+ (UIViewController *)getPresentedViewController {
    UIViewController *rootVC = [UIApplication sharedApplication].keyWindow.rootViewController;
    UIViewController *presentedVC = rootVC;
    if (presentedVC.presentedViewController) {
        presentedVC = presentedVC.presentedViewController;
    }
    return presentedVC;
}

2、通过UIView获取所在的UIViewController

- (UIViewController *)viewController {
    UIView *next = self;
    while ((next = [next superview])) {
        UIResponder *nextResponder = [next nextResponder];
        if ([nextResponder isKindOfClass:[UIViewController class]]) {
            return (UIViewController *)nextResponder;
        }
    }
    return nil;
}
在自定义UIView中实现页面跳转等操作
[[self viewController].navigationController pushViewController:nextViewController animated:YES];
[[self viewController].navigationController popViewControllerAnimated:YES];//返回上一个页面

如有疑问或错误的地方,欢迎留言!
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

上一篇下一篇

猜你喜欢

热点阅读