1. 程式人生 > >獲取當前螢幕顯示的viewcontroller

獲取當前螢幕顯示的viewcontroller

//獲取當前螢幕Presented顯示的viewcontroller
- (UIViewController *)getPresentedViewController
{
    UIViewController *appRootVC = [UIApplication sharedApplication].keyWindow.rootViewController;
    UIViewController *topVC = appRootVC;
    if (topVC.presentedViewController) {
        topVC = topVC.presentedViewController
; } return topVC; } //獲取當前螢幕Push顯示的viewcontroller - (UIViewController *)getCurrentVC { UIViewController *result = nil; UIWindow * window = [[UIApplication sharedApplication] keyWindow]; NSArray *windows = [[UIApplication sharedApplication] windows]; if (window.windowLevel != UIWindowLevelNormal) { NSArray
*windows = [[UIApplication sharedApplication] windows]; for(UIWindow * tmpWin in windows) { MyLog(@"類名%@", NSStringFromClass([tmpWin.rootViewController class])); 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; }