将UIViewController推送到导航堆栈时,如何显示标签栏

时间:2009-08-27 03:35:21

标签: iphone iphone-sdk-3.0

因此,当您将视图控制器推入导航控制器堆栈时,可以很容易地隐藏标签栏:

uiViewController.hidesBottomBarWhenPushed = YES;

只是很好玩。

让我们说我想深入到堆栈并再次显示它?

设置

 laterUIViewController.hidesBottomBarWhenPushed = NO; 
某些后来的视图控制器上的

不会重新出现。它仍然是隐藏的。

4 个答案:

答案 0 :(得分:3)

您可以尝试继承UIViewController并覆盖

- (void)viewWillAppear:(BOOL)animated { self.hidesBottomBarWhenPushed = YES; }
- (void)viewWillDisappear:(BOOL)animated { self.hidesBottomBarWhenPushed = NO; }

然后使用该子类作为要显示底栏的视图控制器的超类。

答案 1 :(得分:2)

这对我有用:

- (void)viewWillAppear:(BOOL)animated { self.tabBarController.tabBar.hidden = YES; }
- (void)viewWillDisappear:(BOOL)animated { self.tabBarController.tabBar.hidden = NO; }

答案 2 :(得分:1)

尝试此解决方法:如果您没有在视图控制器之间切换动画,它应该可以正常工作。

我们的想法是让您的标签栏控制器的视图大小更大,以便tabbar(位于视图的底部)离开屏幕并在隐藏视图时恢复视图大小。

在应隐藏标签栏的视图控制器中,定义以下方法:

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];

    CGRect r = self.tabBarController.view.frame;
    r.size.height +=self.tabBarController.tabbar.frame.size.height;
    self.tabBarController.view.frame = r;
}

-(void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    self.tabBarController.view.frame = CGRectMake(0, 0, 320, 480); //for iPhone portrait
}

您需要确保在您的app app delegate tabbar controler和window outlet中定义并与XIB正确链接

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;

答案 3 :(得分:-1)

尝试取消隐藏它,所以你告诉它隐藏,它隐藏,但是你告诉它不要隐藏它(我不知道它是否重新显示它,如果你把它设置为否)但看起来它不是,或者你告诉它不要隐藏当你想要的视图控制器已经被推入时它并没有取消隐藏栏直到下一个视图控制器被推动,所以你应该尝试将它设置为unhidden youself