當我們在前臺收到遠端推送,或者需要封裝一個相容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;
}
複製程式碼