我有以下问题。
我有一个UINavigationBar的背景图片,所以我必须隐藏导航栏中的所有标题。问题来自TabBarController的“更多”导航栏。我设法隐藏了它,但这只是第一次显示时才会发生。当我从中选择一个项目并返回时,会再次显示“更多”。
我猜我应该在“更多”视图控制器的某种“viewWillAppear”委托方法中禁用标题,但我不知道该怎么做。
这是我第一次显示“更多”,正如您所看到的,徽标就在那里(当然是污迹:))但是,更多不是: http://www.flickr.com/photos/68985587@N02/6272805069/lightbox/
这是“更多”视图控制器中第一个项目的视图控制器: http://www.flickr.com/photos/68985587@N02/6272805241/in/photostream/lightbox/
按下导航栏中的“更多”左按钮返回后,我得到了这个: http://www.flickr.com/photos/68985587@N02/6273332152/in/photostream/lightbox/
感谢您的帮助!
答案 0 :(得分:2)
解决方案是将委托设置为更多视图控制器并根据委托方法进行操作。
首先,我将委托设置为“更多”视图控制器(在我的情况下在appdelegate中):
[tbc.moreNavigationController setDelegate:self];
我继续实施以下方法:
-(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
if([viewController.title isEqualToString:@"More" ])
{
UILabel *label = [[[UILabel alloc] init] autorelease];
viewController.navigationItem.titleView = label;
label.text = @"";
}
}
这不仅仅是第一次被调用,而是每次视图控制器出现时。即使按下后退按钮也是如此。
答案 1 :(得分:1)
您可以通过实现 UITabBarDelegate 的委托方法tabBar:didSelectItem:
来检查单击 UITabBarController 的哪个选项卡。如果单击了第五个项目(“更多”项目),则可以设置如下标题:
[[[tabBarController moreNavigationController] visibleViewController] setTitle:@""];
我希望,它有效,我没有尝试过。祝你好运!
答案 2 :(得分:0)
答案 3 :(得分:0)
您可以替换标签:
UITabBarItem *i = self.tabBarController.tabBar.items[4];
[i setTitlePositionAdjustment:UIOffsetMake(0., 300.)];
所以它有一个偏离顶部的偏移让它消失......