IOS-get the Controller of the current view
Obtains the TopViewController of the current view.
AppDelegate *appdelegate = (AppDelegate *)[UIApplication sharedApplication].delegate; UIViewController* topViewController = appdelegate.baseTabBarController.navigationController.topViewController; NSLog(@"%@",topViewController); if ([topViewController isKindOfClass:[ HomeViewController class]]) { }
Obtains the RootViewController (Nav level) of the current view)
-(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;}