在View中获取UIViewController
- (UIViewController*)viewController {
UIResponder *nextResponder = self;
do {
nextResponder = [nextResponder nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]])
return (UIViewController*)nextResponder;
} while (nextResponder != nil);
return nil;
}
UINavigationController获取顶部ViewController
self.navigationController.visibleViewController
获取当前展示顶层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;
}
获取当前ViewController的UINavigationController
+ (UINavigationController *)nextNavigationController {
UIResponder *nextResponder = [self topViewController];
do {
nextResponder = [nextResponder nextResponder];
if ([nextResponder isKindOfClass:[UINavigationController class]])
return (UINavigationController*)nextResponder;
} while (nextResponder != nil);
UITabBarController *rootVC = (UITabBarController *)[[UIApplication sharedApplication].delegate window].rootViewController;
return rootVC.selectedViewController;
}
记录一下,并非原创
网友评论