推送视图时“隐藏”选项卡栏

时间:2009-10-26 23:38:55

标签: iphone uitabbarcontroller

“纽约时报”iPhone应用程序有一个带有五个标签栏项目的标签栏。当您选择最新选项卡时,应用程序会在UITableView中显示标题和摘要/摘要。当您选择要阅读的单个故事时,标签栏将消失,并替换为根据应用程序状态显示/消失的页眉和页脚。该应用如何“隐藏”标签栏?

谢谢!

3 个答案:

答案 0 :(得分:10)

在要隐藏标签栏的类中实现这段代码。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
    // Custom initialization
}
self.hidesBottomBarWhenPushed = YES;
return self;
}

一切顺利。

答案 1 :(得分:6)

正被推送到导航控制器堆栈的视图控制器将其hidesBottomBarWhenPushed参数设置为yes。代码在表视图的-didSelectRowAtIndexPath中看起来像这样。

NSDictionary *newsItem = [newsItems objectAtIndex:[indexPath row]];
NewsDetailViewController *controller = [[NewsDetailViewController alloc] init];
[controller setHidesBottomBarWhenPushed:YES];
[controller setNewsItem:newsItem];
[[self navigationController] pushViewController:controller animated:YES];
[controller release], controller = nil;

查看documentation for hidesBottomBarWhenPushed

P.S。如果你向它添加标签'iphone',你可能会对这个问题有更多的了解。

答案 2 :(得分:2)

我有一个视图,需要选择(取决于其他一些状态)显示导航控制器工具栏。这是我以前展示的解决方案。当视图出现时隐藏工具栏(带动画)&通过导航消失。这听起来像你可能会追求的。

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

    // Show the nav controller toolbar if needed
    if (someBool)
        [self.navigationController setToolbarHidden:NO animated:animated];
}

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

    // Hide the nav controller toolbar (if visible)
    [self.navigationController setToolbarHidden:YES animated:animated];
}