iOS獲取當前顯示的UIViewController

當我們在前臺收到遠程推送,或者需要封裝一個兼容iOS9之后的UIAlertController的彈出警告框等等場景時,我們需要去獲取當前屏幕顯示的UIViewController,具體方法如下:

//獲取當前屏幕顯示的UIViewController  
- (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;  
}  
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容