这个纯粹就是个人的总结,若果有疑问请留言
tip :版本不一样不会有太大的问题
请见官方文章,说的很清晰,我只说一下文章中没有提到的东西和实际开发中遇到问题,本人不是原生开发,不喜勿喷
https://nativesupport.dcloud.net.cn/NativePlugin/course/ios
文章中也有给出结论
https://nativesupport.dcloud.net.cn/NativePlugin/course/ios?id=q-%e5%a6%82%e4%bd%95%e8%b7%b3%e8%bd%ac%e5%8e%9f%e7%94%9f-uiviewcontroller
直接使用这个方法就可以
// 获取当前显示的 UIViewController
+ (UIViewController *)dc_findCurrentShowingViewController {
//获得当前活动窗口的根视图
UIViewController *vc = [UIApplication sharedApplication].keyWindow.rootViewController;
UIViewController *currentShowingVC = [self findCurrentShowingViewControllerFrom:vc];
return currentShowingVC;
}
+ (UIViewController *)findCurrentShowingViewControllerFrom:(UIViewController *)vc
{
// 递归方法 Recursive method
UIViewController *currentShowingVC;
if ([vc presentedViewController]) {
// 当前视图是被presented出来的
UIViewController *nextRootVC = [vc presentedViewController];
currentShowingVC = [self findCurrentShowingViewControllerFrom:nextRootVC];
} else if ([vc isKindOfClass:[UITabBarController class]]) {
// 根视图为UITabBarController
UIViewController *nextRootVC = [(UITabBarController *)vc selectedViewController];
currentShowingVC = [self findCurrentShowingViewControllerFrom:nextRootVC];
} else if ([vc isKindOfClass:[UINavigationController class]]){
// 根视图为UINavigationController
UIViewController *nextRootVC = [(UINavigationController *)vc visibleViewController];
currentShowingVC = [self findCurrentShowingViewControllerFrom:nextRootVC];
} else {
// 根视图为非导航类
currentShowingVC = vc;
}
return currentShowingVC;
}
使用方法
我的建议是写一个uiviewcontroller类别,命名为CurrentViewController也可以随意,这样就不用每次使用的时候都去写一遍了,在h文件中吧dc_findCurrentShowingViewController这个方法抛出就可以了,使用的时候只需要调用dc_findCurrentShowingViewController这个方法即可
// viewController 这个可以用作跳转的viewConteroller 即可
UIViewController * viewController = [UIViewController dc_findCurrentShowingViewController];
文档
https://nativesupport.dcloud.net.cn/AppDocs/usesdk/ios?id=%e5%a6%82%e4%bd%95%e7%94%a8%e7%a6%bb%e7%ba%bf%e6%89%93%e5%8c%85%e5%b7%a5%e7%a8%8b%e5%88%b6%e4%bd%9c%e8%87%aa%e5%ae%9a%e4%b9%89%e8%b0%83%e8%af%95%e5%9f%ba%e5%ba%a7
只需要把文件拖入即可,xcode会自动引入的,拖动的时候注意,一定要选择复制 和 此项目即可
有新的发现会及时更新,不喜勿喷,有问题评论,如果有帮到你了,麻烦支持下,谢谢