一、前言
-
2021.7.27--更新:文章内容适合Native为主RN为辅的情况
-
以下为原文
-
最近在写RN的项目,遇到一个模态弹出来的控制器需要Push切换的问题,解决问题后,这篇文章就做个记录
-
描述:一个用RN写的地址列表,用原生控制器加载出来了,是从TabBar控制器Push进来的,如下图:
![](https://img.haomeiwen.com/i1690713/15bf9001a42c8765.jpg)
- 问题:点击地址列表的cell后会模态弹出RCTModalHostViewController控制器,然后点击底部Item后,需要Push出去处理,如下图:
![](https://img.haomeiwen.com/i1690713/7463fda9f4bcfd3f.jpg)
-
问题分析:RCTModalHostViewController是通过模态方式弹出的,点击底部Item是没法直接进行Push的,试了很多种方法,最后找到一种比较好的方式
-
问题解决:
先取windows的根控制器(RootVC),再将根控制器转成tabBarVC,再去取tabBarVC的selectedViewController,再将selectedViewController转成导航栏控制器,再通过导航栏控制器再进行push就可以了,如下图
![](https://img.haomeiwen.com/i1690713/4d15a84a1bfe91bf.gif)
- Swift代码:
let navigationVC = (UIApplication.shared.keyWindow?.rootViewController as! UITabBarController).selectedViewController as! UINavigationController
navigationVC.pushViewController(RNVC, animated: false)
网友评论