2012-03-23 49 views
0

下面的代码(适用于较低版本的iOS)我将UINavigationBar分类并应用于我的UITabBarController中的每个导航栏(每个导航控制器)。用于UITabBarController中“更多”视图控制器的自定义导航栏

@implementation CustomNavigationBar 

- (void)drawRect:(CGRect)rect { 
    UIImage *image = [UIImage imageNamed:@"customNavigationBar.png"]; 
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
} 

@end 

的代码工作正常的视图控制器是可见的可接近,但按“更多”标签访问其他视图控制器时,自定义图像不会出现了。我错过了什么吗?

+0

做更多的点出现。 。 。 ??请说明如何初始化您的UITabBarController .... – Damo 2012-03-23 13:19:22

+0

是的,它们出现时,UITabController在Interface Builder中初始化并在我的主视图控制器中处理。更多的点确实出现了,我对控制器本身没有任何问题,只是定制。所有视图控制器的定制都与“更多...”选项卡中的定制控制器不同。 – sooper 2012-03-23 13:21:43

+0

UITabBarController中有多少个视图控制器?我猜测超过5个? – Damo 2012-03-23 13:25:03

回答

1

我自定义更多视图控制器的方式是确保您不会从UITabBarController本身获得默认的更多控制器 - 这听起来就像您正在经历的一样。

1创建您自己的更多视图控制器。这将有自己的自定义图标

//MyMoreViewController.m 
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
     self.title = NSLocalizedString(@"More", @"More"); 
     self.tabBarItem.image = [UIImage imageNamed:@"MyCustomMoreImage"]; 
    } 
    return self; 
} 

然后

2当你初始化你的UITabBarController,确保您五个正是视图控制器的初始化器和自定义多个视图控制器是根视图第五项控制器 - 即通常你会使用一个导航控制器与你更多的视图控制器被设置为它的rootViewController。

+0

这种方法唯一的问题是我失去了在“编辑”模式下重新排序标签的能力,我可能不得不与tint color – sooper 2012-03-23 14:05:47

+0

它是一个很好的观点 - 我牺牲了重新排序而不是默认的uitableview的外观和感觉,并且很满意如果你想/需要重新排序,那么你要么c不要这样做,或者必须为自己重新创造它。 – Damo 2012-03-23 14:09:10

1

UITabBarController将创建UINavigationController为更多的项目,所以它的UINavigationBar不会是你的类的实例,但UINavigationBar代替。

你可以看看iOS 5的外观API来改变它的外观和感觉。

+0

我正在认真考虑仅使我的应用程序可用到iOS 5.有什么地方可以找到关于iOS版本的统计信息?您对此有何看法? – sooper 2012-03-23 14:04:21

+1

对于没有安装基础的新应用程序,我肯定会这样做。在现有应用程序中,您可能会偶尔已经支付并且已被“遗漏”更新的人的投诉 – pgb 2012-03-23 14:31:50

1

您可以使用tabBarController的moreViewController属性来获取更多的导航控制器(我用这对iOS7应用程序)

UINavigationController *moreViewController = tabController.moreNavigationController; 
    if(moreViewController) 
    { 
     [moreViewController.navigationBar setBarTintColor: [UIColor yellowColor]]; 
     [moreViewController.navigationBar setTintColor: [UIColor whiteColor]]; 
    } 
相关问题