1. 程式人生 > >iOS 獲取當前正在顯示的ViewController

iOS 獲取當前正在顯示的ViewController

cells 當前 tro 顯示 log sar adding pro ==

//獲取當前屏幕顯示的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