获取当前的UIViewController
来源:互联网 发布:慈溪行知职高黄百央 编辑:程序博客网 时间:2024/06/07 14:28
+ (UIViewController *)getCurrentViewController {
UIViewController *result = nil;
UIWindow * window = [[UIApplication sharedApplication] keyWindow];
//app默认windowLevel是UIWindowLevelNormal,如果不是,找到它
if (window.windowLevel != UIWindowLevelNormal) {
NSArray *windows = [[UIApplication sharedApplication] windows];
for(UIWindow * tmpWin in windows) {
if (tmpWin.windowLevel == UIWindowLevelNormal) {
window = tmpWin;
break;
}
}
}
id nextResponder = nil;
UIViewController *appRootVC = window.rootViewController;
//1、通过present弹出VC,appRootVC.presentedViewController不为nil
if (appRootVC.presentedViewController) {
nextResponder = appRootVC.presentedViewController;
}else{
//2、通过navigationcontroller弹出VC
NSLog(@"subviews == %@",[window subviews]);
UIView *frontView = [[window subviews] objectAtIndex:0];
nextResponder = [frontView nextResponder];
}
//1、tabBarController
if ([nextResponder isKindOfClass:[UITabBarController class]]){
UITabBarController * tabbar = (UITabBarController *)nextResponder;
UINavigationController * nav = (UINavigationController *)tabbar.viewControllers[tabbar.selectedIndex];
//或者 UINavigationController * nav = tabbar.selectedViewController;
result = nav.childViewControllers.lastObject;
}else if ([nextResponder isKindOfClass:[UINavigationController class]]){
//2、navigationController
UIViewController * nav = (UIViewController *)nextResponder;
result = nav.childViewControllers.lastObject;
}else{//3、viewControler
result = nextResponder;
}
return result;
}
UIViewController *result = nil;
UIWindow * window = [[UIApplication sharedApplication] keyWindow];
//app默认windowLevel是UIWindowLevelNormal,如果不是,找到它
if (window.windowLevel != UIWindowLevelNormal) {
NSArray *windows = [[UIApplication sharedApplication] windows];
for(UIWindow * tmpWin in windows) {
if (tmpWin.windowLevel == UIWindowLevelNormal) {
window = tmpWin;
break;
}
}
}
id nextResponder = nil;
UIViewController *appRootVC = window.rootViewController;
//1、通过present弹出VC,appRootVC.presentedViewController不为nil
if (appRootVC.presentedViewController) {
nextResponder = appRootVC.presentedViewController;
}else{
//2、通过navigationcontroller弹出VC
NSLog(@"subviews == %@",[window subviews]);
UIView *frontView = [[window subviews] objectAtIndex:0];
nextResponder = [frontView nextResponder];
}
//1、tabBarController
if ([nextResponder isKindOfClass:[UITabBarController class]]){
UITabBarController * tabbar = (UITabBarController *)nextResponder;
UINavigationController * nav = (UINavigationController *)tabbar.viewControllers[tabbar.selectedIndex];
//或者 UINavigationController * nav = tabbar.selectedViewController;
result = nav.childViewControllers.lastObject;
}else if ([nextResponder isKindOfClass:[UINavigationController class]]){
//2、navigationController
UIViewController * nav = (UIViewController *)nextResponder;
result = nav.childViewControllers.lastObject;
}else{//3、viewControler
result = nextResponder;
}
return result;
}
阅读全文
0 0
- 获取当前的UIViewController
- 获取当前AppDelegate 正在显示的UIViewController
- iOS根据UIVIew获取当前的UIViewController
- IOS8如何获取当前UIViewController
- 通过当前UIView获取它对应的UIViewController
- 获取UIView的UIViewController
- 获取uiview的uiviewcontroller
- 获取uiview的uiviewcontroller
- 怎么在当前的view上获取所在的控制器(UIViewController),实现跳转
- 设置导航栏Edit 、自定义按钮 获取当前活动的Tab索引和UIViewController
- 本地相册选择照片或相机拍照 获取当前Window最上面的 UIViewController
- 获取UIView所属的UIViewController
- 获取UIViewController的几个方法
- UIView会自动获取UIViewController的引用?
- 获取uiview的uiviewcontroller和rootviewcontroller
- 获取UIView的视图控制器-UIViewController
- iOS --- 获取屏幕顶层的UIViewController
- iOS 获取view的controller UIView+UIViewController
- SimpleDateFormat使用详解
- DiagramDesigner中文
- BEM 命名规范
- 解释器模式
- -Djava.ext.dirs=lib的作用
- 获取当前的UIViewController
- VMware虚拟磁盘VMDK格式说明书1.1--- 4 Simple Extents
- HttpUrlConnection用get和post请求发送参数
- 在环境变量PATH中添加路径
- 演示响应正文乱码的问题--字节流
- androidStudio中的HttpClient
- 记录一次由Redis漏洞引起的服务器遭遇入侵事件
- Global.asax.cs详解---初识.net
- http://blog.csdn.net/yansmile1/article/details/46461655