0

这是我正在使用的方法:

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    [self.tabBarController hideTabBar];
}

-(void) viewWillDisappear:(BOOL)animated
{
    [self.tabBarController showTabBar];
    [super viewWillDisappear:animated];
}

使用这种方法,如果我在导航堆栈中添加一些内容,UITabBar 将再次显示。

如果我希望仅在用户导航到另一个选项卡或按下后退按钮时才显示 UITabBar,而不是所有的 viewWillDisappear 情况,该怎么办?

在导航堆栈顶部推送 UIViewController 不应改变这一点

4

3 回答 3

4

您也可以使用 NSNotification,因此无论何时需要隐藏标签栏。在那一刻触发将显示/隐藏您的标签栏的通知。

NSNotification 的好处是,您可以在整个应用程序生命周期中触发它,它并不特定于任何视图控制器或任何类。可以独立于任何类/视图控制器使用它。

希望这是您正在寻找的。

问候, Mrunal

于 2013-01-16T10:40:11.293 回答
3

在您的视图中执行以下操作将出现方法

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    self.navigationController.tabBarController.tabBarController.tabBar.hidden=TRUE;
}

这将从特定控制器中删除标签栏。并且导航堆栈不会改变。

于 2013-01-16T04:08:45.180 回答
0

这就是我所做的

在 viewDidDisappear,我检查 self.navigationController 是否为空。如果它是空的,我只知道该视图已从导航控制器中弹出,这是将该视图从窗口层次结构中取出的唯一方法。

于 2013-01-16T06:45:30.357 回答