2012-09-13 91 views
1

我有一個推動UIViewController的導航控制器。我想在用戶按下某個按鈕時更改導航項目的後退按鈕的色調。這可能嗎?我曾嘗試使用[UIBarButtonItem appearance] setTintColor:,但它只適用於初始化(例如在viewDidLoad中),否則不起作用。iOS:更改後退按鈕的色調顏色?

回答

5

試試這個......

您需要使用的UIBarButtonItem與自定義視圖。事情是這樣的:

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 70, 30)]; 
[button addTarget:target action:@selector(back:) forControlEvents:UIControlEventTouchUpInside]; 
[button setImage:[UIImage imageNamed:@"back_button.png"] forState:UIControlStateNormal]; 
[button setImage:[UIImage imageNamed:@"back_button_tap.png"] forState:UIControlStateHighlighted]; 
UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 

並把按鈕,導航欄,通常與UINavigationController的控制器:

self.navigationItem.leftBarButtonItem = buttonItem; 
3

在那個叫上你的按鈕點擊的方法,只是把[self.navigationItem.backBarButtonItem setTintColor:[UIColor *whateverColorYouWant*]];我沒有測試過,但我99%肯定會工作

編輯: 只是測試它,它的工作原理。

+0

我只是想這和它的墜毀是因爲backBarButtonItem爲空。任何想法,爲什麼這將是如何解決它? –

+0

你是否試圖改變後退按鈕的顏色(它是一種類似箭頭的形狀)?如果它只是一個常規的barButtonItem,那麼你可以嘗試改變leftBarButtonItem和rightBarButtonItem的tintColor。 –

+0

我的意思是導航控制器提供的箭頭形狀後退按鈕,而不是我添加的按鈕。 –

1

下面是改變後退按鈕的文本和彩色代碼:

- (void)viewDidLoad 
{ 
    UIBarButtonItem *backButton = [UIBarButtonItem new]; 
    [backButton setTitle:@"Back"]; 
    [backButton setTintColor:[UIColor yellowColor]]; 
    [[self navigationItem] setBackBarButtonItem:backButton]; 
} 
+0

這實際上工作嗎?我記得你需要使用setLeftBarButtonItem和你的自定義按鈕並將hidesBackbutton設置爲TRUE,但是你不能覆蓋後臺按鈕項屬性(因爲它是在導航時生成的)... – EeKay

6

對我來說,最簡單的事情就是要爲所有uibarbutton項目着色顏色:

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

然後明確設置我的導航欄,以其他的色彩營造出&地方明確navigationbuttons的tintcolor ...

爲我節省了C的頭痛當我想要做的事情是改變色彩時,重新定製後扣。

+0

這隻適用於普通的酒吧按鈕。但不適用於後退按鈕。 –

0

試試這個:

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class],[UIToolbar class], nil] setTintColor:[UIColor redColor]];