1

我正在创建一个基于 TabBar 的应用程序,其中我在第二个选项卡中有 4 个选项卡我有一个 UICollectionView 控件来显示来自 RSS 提要的图像。

当用户单击任何图像时,它应该导航以显示在另一个 UIViewController 中以获取有关该图像的更多详细信息。我想在详细信息页面中隐藏 TabBar。我尝试了很多方法,但它不起作用。

以下是我在选择中的代码UICollectionView

-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {

    DetailView *detail=[[DetailView alloc] init];
    detail.item= (MWFeedItem *)[itemsToDisplay objectAtIndex:indexPath.row];
    [self.navigationController pushViewController:detail animated:YES];
    [detail setHidesBottomBarWhenPushed:YES];
    [self.myCollectionView deselectItemAtIndexPath:indexPath animated:YES];
}

setHidesBottomBarWhenPushed:YES为详细页面设置了仍然显示详细页面的标签栏。

我应该在这里做任何其他事情吗?

4

2 回答 2

2

DetailView是视图控制器,因为您将其推入self.navigationController

重写 ViewController 的viewWillAppearandviewWillDisappear方法DetailView,当您在 TabBarController 中添加 NavigationController 作为视图之一时,您可以直接访问tabBarController属于的视图控制器堆栈中的对象NavigationController

请尝试以下代码:

-(void) viewWillAppear:(BOOL)animated {

    [super viewWillAppear:YES];

    // if you added bottom bar thr xib or thr code on DetailView VC, better if you remove it from DetailView xib
    [self setHidesBottomBarWhenPushed:YES]; 

    // this will hide the Tabbar  
    [self.tabBarController.tabBar setHidden:YES];
}

-(void) viewWillDisappear:(BOOL)animated{

    [super viewWillDisappear:YES];

    // this will show the Tabbar  
    [self.tabBarController.tabBar setHidden:NO];
}
于 2012-12-02T12:10:00.643 回答
1

我最初的答案已转换为评论。因为它很短,我认为(仅比外部网站的链接多)!

但是,正如您在上次对我的评论中详细说明的那样,您真正需要的是:如果您想更改 UITabBar 的外观,则不一定需要为此目的子类化 UITabBarController。这取决于您需要的定制程度,但请先查看 Apple 的“外观 API”。这是来自 Ray Wenderlich 网站的一篇关于iOS5 中用户界面自定义的好文章(也适用于 iOS6,文章中包含一个示例项目)。

这是通过 Appearance API 自定义标签栏的另一个好方法。

于 2012-12-03T07:47:32.877 回答