2012-03-23 66 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]]; 
    } 
相關問題