IOS -获取当前视图的Controller

来源:互联网 发布:格式化后恢复数据 编辑:程序博客网 时间:2024/06/06 05:08

获取当前视图的TopViewController

 AppDelegate *appdelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;    UIViewController* topViewController = appdelegate.baseTabBarController.navigationController.topViewController;    NSLog(@"%@",topViewController);     if ([topViewController isKindOfClass:[ HomeViewController class]]) {     }

获取当前视图的RootViewController(Nav级别)

-(UIViewController *)getCurrentRootViewController {    UIViewController *result;    // Try to find the root view controller programmically    // Find the top window (that is not an alert view or other window)    UIWindow *topWindow = [[UIApplication sharedApplication] keyWindow];    if (topWindow.windowLevel != UIWindowLevelNormal)    {        NSArray *windows = [[UIApplication sharedApplication] windows];        for(topWindow in windows)        {            if (topWindow.windowLevel == UIWindowLevelNormal)                break;        }    }    UIView *rootView = [[topWindow subviews] objectAtIndex:0];    id nextResponder = [rootView nextResponder];    if ([nextResponder isKindOfClass:[UIViewController class]])        result = nextResponder;    else if ([topWindow respondsToSelector:@selector(rootViewController)] && topWindow.rootViewController != nil)        result = topWindow.rootViewController;    else        NSAssert(NO, @"ShareKit: Could not find a root view controller.  You can assign one manually by calling [[SHK currentHelper] setRootViewController:YOURROOTVIEWCONTROLLER].");    return result;}
0 0