码迷,mamicode.com
首页 > 移动开发 > 详细

iOS 获取当前正在显示的ViewController

时间:2018-03-12 10:24:52      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:nbsp   window   tab   UI   orm   break   显示   ati   gpo   

 
//获取当前屏幕显示的viewcontroller  
- (UIViewController *)getCurrentVC  
{  
    UIViewController *result = nil;  
      
    UIWindow * window = [[UIApplication sharedApplication] keyWindow];  
    if (window.windowLevel != UIWindowLevelNormal)  
    {  
        NSArray *windows = [[UIApplication sharedApplication] windows];  
        for(UIWindow * tmpWin in windows)  
        {  
            if (tmpWin.windowLevel == UIWindowLevelNormal)  
            {  
                window = tmpWin;  
                break;  
            }  
        }  
    }  
      
    UIView *frontView = [[window subviews] objectAtIndex:0];  
    id nextResponder = [frontView nextResponder];  
      
    if ([nextResponder isKindOfClass:[UIViewController class]])  
        result = nextResponder;  
    else  
        result = window.rootViewController;  
      
    return result;  
} 
 
 
2.获取当前屏幕中present出来的viewcontroller。

- (UIViewController *)getPresentedViewController  
{  
    UIViewController *appRootVC = [UIApplication sharedApplication].keyWindow.rootViewController;  
    UIViewController *topVC = appRootVC;  
    if (topVC.presentedViewController) {  
        topVC = topVC.presentedViewController;  
    }  
      
    return topVC;  
} 
 
1
2
3
4
5
6
7
8
9
func rootViewCon() -> UIViewController {
     
    var topVC UIApplication.shared.keyWindow?.rootViewController
    while topVC?.presentedViewController != nil {
        topVC topVC?.presentedViewController!
    }
     
    return topVC!
}

iOS 获取当前正在显示的ViewController

标签:nbsp   window   tab   UI   orm   break   显示   ati   gpo   

原文地址:https://www.cnblogs.com/mafeng/p/8547411.html

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