一般App都是Window->UITabBarController->UINavigationController->UIViweController,而一般跟视图ViewController的UITabBar都是显示的,但是随便push到某个ViewController都是需要隐藏的。
比如:A是跟视图ViewController,A push 到B ,B需要隐藏
很多人喜欢这样写,这样是错误的,因为会在B底部留白
在B控制器里面写
-(void)viewWillAppear:(BOOL)animated{
[superview WillAppear:animated];
self.tabBarController.tabBar.hidden=YES;
}
- (void)viewWillDisappear:(BOOL)animated{
[superview WillDisappear:animated];
self.tabBarController.tabBar.hidden=YES;
}
正确的姿势应该是在Apush到B之前就已经设置好了隐藏UITabBar
B.hidesBottomBarWhenPushed=YES;
[self.navigationController pushViewController:B animated:YES];
这样就不会存在留白的问题,再push到别的控制器就不用写这句话也可以隐藏的
这是pop到跟视图UIViewController发现,UITabBar还是隐藏的状态,那么只需要在A控制器添加
-(void)viewWillAppear:(BOOL)animated{
[superview WillAppear:animated];
self.tabBarController.tabBar.hidden=NO;
}