1.首先找到RN项目依赖库文件RCTNavigator.m
2.追加NavigationController代理方法
3.追加方法如下:
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
//解决tabBarController进入子界面不能隐藏的问题
RCTWrapperViewController * thisController = (RCTWrapperViewController *)viewController;
if (navigationController.viewControllers.count > 1) {
thisController.tabBarController.tabBar.hidden = YES;
} else {
thisController.tabBarController.tabBar.hidden = NO;
}
}
4.其他使用方法不变
唯一缺点就是不能及时显示或者隐藏因为使用的didShowViewController。之所以不在willShowViewController方法里面加逻辑的原因就是,willShowViewController在push到子界面通过手势返回且取消返回时也会被触发,就会导致tabBar再次出现。