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