2012-09-13 60 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]];