2011-07-24 64 views
4

我想使用下面的代碼設置我的導航欄的後退文本顏色(紅色)。 (注:下面的代碼已經在「上一個」視圖控制器,在這種情況下,在「人氣王」視圖控制器:無法更改navigationitem的後退按鈕的文本和文本顏色

//Customize Back button 
UIView *backButtonView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 30, 40)]; 
UILabel *backButtonLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 30, 40)]; 
backButtonLabel.text = @"back"; 
backButtonLabel.textColor = [UIColor colorWithHexString:@"cf212a"]; 
[backButtonView addSubview:backButtonLabel]; 

UIBarButtonItem *backButton = [[UIBarButtonItem alloc]initWithCustomView:backButtonView]; 
self.navigationItem.backBarButtonItem = backButton; 

但是,我沒有得到我想要的效果,我仍然得到默認情況下,後退按鈕白色的文字。文字不改變「後退」以及

enter image description here

我怎樣才能解決這個問題?

回答

4

那是因爲backbuttonitem是將要上看到的UIBarButtonItem下一個視圖控制器哪個將被推到你當前的視圖控制器之上,而不是當前的視圖控制器。

如果您想設置當前視圖的後退按鈕,就像您在上面的代碼中試圖執行的操作,而不是將代碼移動到它之前顯示的視圖控制器中(在其下面),以便當您按下要在其中顯示在上一個視圖控制器中設置的自定義後退按鈕的視圖控制器。這是因爲後退按鈕屬於先前的視圖控制器,這將推動你的新視圖控制器...

+0

上面的代碼已經被添加到前視圖 - 控制,但我仍然無法改變返回鍵。我添加自定義視圖(backButtonView)的方式是否正確? – Zhen

+0

你可以嘗試一個正常的uibarbuttonitem,然後去定製視圖,看看是否有所作爲。 – Robin

1

我相信只有title財產重要的後退按鈕項目;它可以讓你在中間有一個長標題,在後退按鈕中有一個較短的標題。

添加自定義「後退按鈕」的最簡單方法是設置UINavigationItem.leftBarButtonItem;您必須適當設定其目標/操作。

+0

我有多個視圖控制器,這使得它在逐個定製'後退按鈕'時效率極低。此外,多個視圖控制器可以調用另一個視圖控制器,在這種情況下如何設置目標/動作? – Zhen

+0

目標是「自我」,並且行動是可以將其從導航控制器上彈出的東西。在UINavigationBar上可能還有一些涉及類別的黑客方式,但我不會去那裏。 –

1

這爲我工作。

利用這一點,你可以改變所有的導航按鈕的顏色:

[[UIBarButtonItem appearance] setTintColor:[UIColor redColor]];

更換redColor用以下調整按鈕的顏色:

colorWithRed:0/255.0 green:144/255.0 blue:200/255.0 alpha:1.0// pick your color using this 

一定要把它放在推動的視圖控制器中。不是視圖控制器,你想看到這個後退按鈕的顏色。像羅賓解釋。

0

問題是你沒有一個很好的方法來設置全局級別的按鈕的字體和顏色。這是在當前的iOS 5中。爲此我使用的是typeoneerror的https://github.com/typeoneerror/BBCustomBackButtonViewController這裏提到。

但是,在全局級別設置導航欄按鈕的文本和色調屬性並不會破壞其他按鈕和菜單的外觀,這是一種好方法。我使用的代碼是:

[[UIButton appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleColor:[UIColor colorWithRed:102.0f/255.0f green:102.0f/255.0f blue:102.0f/255.0f alpha:1.0f] forState:UIControlStateNormal]; 
[[UIButton appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleShadowColor:[UIColor colorWithWhite:1.0 alpha:0.75] forState:UIControlStateNormal]; 
[[[UIButton appearanceWhenContainedIn:[UINavigationBar class], nil] titleLabel] setShadowOffset:CGSizeMake(1.0, 1.0)]; 

在我的一個項目中。我是從- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

1

最佳方式調用它,我發現全局設置,或在本地是

[[UIBarItem appearance] setTitleTextAttributes: 
     [NSDictionary dictionaryWithObjectsAndKeys: 
     [UIColor colorWithRed:220.0/255.0 green:104.0/255.0 blue:1.0/255.0 alpha:1.0], UITextAttributeTextColor, 
     [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0], UITextAttributeTextShadowColor, 
     [NSValue valueWithUIOffset:UIOffsetMake(0, 1)], UITextAttributeTextShadowOffset, 
     [UIFont fontWithName:@"AmericanTypewriter" size:0.0], UITextAttributeFont, 
     nil] 
     forState:UIControlStateNormal]; 
0
self.navigationItem.backBarButtonItem.tintColor = [UIColor blackColor]; 
相關問題