好多小伙伴在跳转的时候,尤其是想封装一个方法时,调用这个方法获取到最上层的类,然后用
navigationController进行跳转,例如:
[[Toolkit topViewController].navigationController pushViewController:control animated:YES];
其中[Toolkit topViewController]是我封装的工具方法,就是调取下面的topViewController这个方法,获取到最上层的类,然后用navigationController进行跳转,这样就不受跳转的限制,也不用传类过去。
#pragma mark=========获取当前类==========
+ (UIViewController *)topViewController {
UIViewController *resultVC;
resultVC = [Toolkit _topViewController:[[UIApplication sharedApplication].keyWindow rootViewController]];
while (resultVC.presentedViewController) {
resultVC = [Toolkit _topViewController:resultVC.presentedViewController];
}
return resultVC;
}
+ (UIViewController *)_topViewController:(UIViewController *)vc {
if ([vc isKindOfClass:[UINavigationController class]]) {
return [self _topViewController:[(UINavigationController *)vc topViewController]];
} else if ([vc isKindOfClass:[UITabBarController class]]) {
return [self _topViewController:[(UITabBarController *)vc selectedViewController]];
} else {
return vc;
}
return nil;
}