码迷,mamicode.com
首页 > 其他好文 > 详细

UI基础 获取当前屏幕显示的viewcontroller

时间:2016-05-22 18:09:32      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

1 #pragma mark - 获取当前屏幕显示的viewcontroller
 2 - (UIViewController *)getCurrentVC
 3 {
 4     UIViewController *result = nil;
 5     
 6     UIWindow * window = [[UIApplication sharedApplication] keyWindow];
 7     if (window.windowLevel != UIWindowLevelNormal)
 8     {
 9         NSArray *windows = [[UIApplication sharedApplication] windows];
10         for(UIWindow * tmpWin in windows)
11         {
12             if (tmpWin.windowLevel == UIWindowLevelNormal)
13             {
14                 window = tmpWin;
15                 break;
16             }
17         }
18     }
19     
20     UIView *frontView = [[window subviews] objectAtIndex:0];
21     id nextResponder = [frontView nextResponder];
22     
23     if ([nextResponder isKindOfClass:[UIViewController class]])
24         result = nextResponder;
25     else
26         result = window.rootViewController;
27     
28     return result;
29 }

如果想进行push和pop,需要将调用方法得到的返回值强制类型转换为UINavigationController类型
1 UINavigationController *NC = (UINavigationController *)[self getCurrentVC];
2 [NC popViewControllerAnimated:YES];

UI基础 获取当前屏幕显示的viewcontroller

标签:

原文地址:http://www.cnblogs.com/menglingxu/p/5517284.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!