React-native中在某些内页如何隐藏TabBarIOS?

#1

主界面用了TabBarIOS,在某些内页不想显示TabBarIOS,要如何做?

#2

同问

#3

好像没有直接的api去隐藏,我们的app也有这个需求,比如二级sence不需要显示TabBar,我们处理的方式,比如Home主页,用NavigatorIOS的initialRouter去加载一个home,在home中使用TabBar,一旦跳转二级sence直接用this.props.navigator.push一个新的view,这样就不会显示tabbar了。

#4

是的,我们也是这么处理的!
可以用一个包裹住然后调用navigator.push到下一页面就行了,下个页面时新的<./View>
题主可能是用了来控制视图的切换,我猜测是文档的例子!

#5

找到RCTNavigator.m,在

(void)navigationController:(UINavigationController )navigationController willShowViewController:(__unused UIViewController *)viewController animated:(__unused BOOL)animated

方法一开始的地方插入语句:

RCTWrapperViewController * thisController = (RCTWrapperViewController *)viewController;
if (navigationController.viewControllers.count > 1) {
  thisController.tabBarController.tabBar.hidden = YES;
} else {
  thisController.tabBarController.tabBar.hidden = NO;
}
1 Like
#6

@hufeng 我的理解是一个NavigatorIOS 包含TabBarIOS 所有页面共用一个NavigatorIOS,但是这种方案有个问题是 tabbar 对应的 view 的NavigatorI titile 共用的也是一个

@akirakazu 方案是可以的,但是会有一个 bug 就是滑动返回时放弃返回 tabbar 会显示出来

另外一直解决方案是:
文件: RCTWrapperViewController.m
方法: - (void)viewWillAppear:(BOOL)animated
插入下面一句

self.navigationController.tabBarController.tabBar.hidden=self.navigationController.childViewControllers.count>1?YES:NO;
1 Like
#7

nice!!!感谢

#8

你可以在进入主页之前 用Navigator组件把你的组件包起来! 接下来主页进入之后哪些页面不想看见TabBarIOS, 你可以直接用navigator.push() 来打开你想要显示组件, 这样TabBarIOS是没有的!

#9

试过了 @riipa 的方法,没有效果… 这个东西TabBarIOS隐藏不了,求navigator.push() 实现的逻辑,或者是代码…

#10

请问能贴断代码吗?

#11

两种方法都实现不了的,第一种和第二种都会有侧滑就出现tabbar的情况