本文将采用两种方法来获取当前显示的视图控制器
第一种:实现UIView的扩展类,可以直接用view.viewController方法。
#import "UIView+UIViewController.h"
@implementation UIView (UIViewController)
- (UIViewController *)viewController{
UIResponder *next = self.nextResponder;
do {
//代表取到了控制器对象
if ([next isKindOfClass:[UIViewController class]]) {
return (UIViewController *)next;
break;
}
next = next.nextResponder;
} while (next != nil);
return nil;
}
@end
第二种:根据当前的视图控制器类型进行多种判断
//获取当前页面控制器
+ (UIViewController *)getCurrentViewController{
UIWindow* window = [[[UIApplication sharedApplication] delegate] window];
NSAssert(window, @"The window is empty");
UIViewController *viewController = window.rootViewController;
if ([viewController isKindOfClass:[UITabBarController class]]) {
UITabBarController *tabBarController = (UITabBarController* )viewController;
viewController = tabBarController.selectedViewController;
}else if ([viewController isKindOfClass:[UINavigationController class]]){
UINavigationController *navigationController = (UINavigationController* )viewController;
viewController = navigationController.childViewControllers.lastObject;
}else{
NSUInteger childViewControllerCount = viewController.childViewControllers.count;
if (childViewControllerCount > 0) {
viewController = viewController.childViewControllers.lastObject;
}
}
return viewController;
}
1436




被折叠的 条评论
为什么被折叠?



