开发项目的过程中遇到这么一个问题:
一个标签控制器包装了两个导航控制器,两个导航控制器分别包装了一个视图控制器(里面主要是UITableView)
当你点击cell的时候推送到另一个界面,需要隐藏标签栏,(因为标签栏覆盖了下面的输入框),回来的时候显示标签栏(这个没什么问题)
当你点击标签栏上的另一个标签再点会回来的时候标签栏会隐藏(我写的错误代码,就不介绍了)
正确思路:(-_-||用这个做出来了应该是正确的吧)
首先需要了解这个属性:(当推送的时候隐藏,默认为NO)
hidesBottomBarWhenPushed
其次,了解UIViewContrllor的生命周期:
- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; } -(void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; // self.hidesBottomBarWhenPushed = NO; } -(void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; // self.hidesBottomBarWhenPushed = YES; }
看到这里,大家可能就知道我以前犯的错误了吧,我将显示和隐藏写在视图将要(显示,消失里面)
已经显示:(推送隐藏)-(推送了)-隐藏
已经消失: (推送不隐藏)- 避免当在标签栏上点击回来的时候标签栏是隐藏的
额,测试了一下,写在已经消失和将要消失里面没有区别(-_-||)
self.hidesBottomBarWhenPushed = YES;
不能写在将要显示里面哦,标签栏切换过来会有问题,
时间: 2024-10-16 19:50:00