如何在基于视图的/ tab-bar应用程序中隐藏选项卡栏

时间:2011-05-12 13:34:04

标签: iphone objective-c xcode view tabbar

我正在使用基于视图的简单iPhone应用程序。 从应用程序的主屏幕,您可以导航到4个不同的视图。 其中一个视图由一个标签栏组成。 因为这不是常规方法,所以我在没有UITabController的情况下使用了解决方法。

为此,我使用了这个主题: https://discussions.apple.com/thread/2099944?start=0&tstart=0

这个示例代码: http://pymbian.svn.sourceforge.net/svnroot/pymbian/stuff/testtab_raynewbie/Classes/

通过一些小的修改,这是有效的。 当我想从标签视图返回主视图时,我只有最后一个错误,标签栏停留在屏幕的底部。

我尝试了几种方法。

myTabBar.hidden = YES
hidesBottomBarWhenPushed = YES

但似乎没有工作...... 我认为问题是在视图UI控制器的奇怪结构中的某个地方。因为现在结构看起来像这样。

MainViewController
- ViewController with TabBar
  - tab1viewcontroller
  - tab2viewcontroller
- other viewcontrollers

回到主视图是在tab1viewcontroller中完成的,我无法对TabBar做任何事情。在所有其他视图中,我将使用此代码返回:

-(IBAction) BackAction:(id)sender {

mainControllerView = [[MainControllerView alloc] initWithNibName:@"MainControllerView" bundle:nil];
[self.view addSubview:mainControllerView.view];
[mainControllerView.view release];

}

有人有想法吗?

2 个答案:

答案 0 :(得分:2)

从上一个视图推送时,您需要隐藏标签栏。

LoginViewController *loginViewObj =[[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
loginViewObj.hidesBottomBarWhenPushed=YES;

LoginViewController是要在不需要标签栏的位置推送的视图。 :)

答案 1 :(得分:0)

在视图控制器中尝试以下要隐藏标签栏的代码

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:YES];
    [self.tabBarController.view setFrame:CGRectMake(0, 0, 320, 560)];
}

-(void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:YES];
    [self.tabBarController.view setFrame:CGRectMake(0, 0, 320, 480)];

}