如何更改默认的backBarButtonItem上的颜色/图像?

13 浏览
0 Comments

如何更改默认的backBarButtonItem上的颜色/图像?

我需要更改默认的“self.navigationItem.backBarButtonItem”的颜色。为了实现这一点,我创建了一个自定义的按钮类,并按照以下方式实现它:

- (void)viewDidLoad {
[super viewDidLoad];    
BackButton *blueSaveButton = [[BackButton alloc] init];
UIBarButtonItem *temporaryBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:blueSaveButton];
temporaryBarButtonItem.title = @"Tillbaka";
self.navigationItem.backBarButtonItem = temporaryBarButtonItem;
[temporaryBarButtonItem release];
[blueSaveButton release];
[self gotoLocation];

}

但是这对按钮没有任何效果。

那么,如何在不“破坏”导航栏的默认/继承行为的情况下完成这一点呢?

编辑:原因是按钮需要符合公司品牌形象,所以默认样式不适用。

BR

0
0 Comments

问题的原因是,想要在默认的backBarButtonItem上改变颜色或图像,但发现在iPhone开发中,这样简单的任务需要对一个简单的控件进行大量的自定义。

解决方法是,使用一个图像来替代默认的backBarButtonItem。首先创建一个UIButton实例,然后使用setTitle:forState:和setBackgroundImage:forState方法设置按钮的标题和背景图片属性。最后,使用UIButton实例作为自定义视图创建UIBarButtonItem。需要注意的是,只设置按钮的背景颜色是不够的。

作者已经在BackButton控制器中实现了这个方法,但推断是NavigationBarItem覆盖了自定义控制器。

以下是整理后的文章:

如果你想让按钮变成蓝色(像一个“完成”按钮)并且标题为“保存”,你可以使用内置的一个bar button item类型:

UIBarButtonItem *item = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:(myAction:)] autorelease];

太快了。我需要设置一个自定义的颜色或图像(公司品牌)。这是iPhone开发中一个很大的缺点,这样简单的任务需要对一个简单的控件进行大量的自定义。

在这种情况下,你将需要使用一个图像。创建一个UIButton实例,使用setTitle:forState:和setBackgroundImage:forState方法设置按钮的标题和背景图片属性,然后使用UIButton实例作为自定义视图创建UIBarButtonItem。据我所知,只设置按钮的背景颜色是不够的。

我已经在BackButton控制器中实现了这个方法。我得出的推断是NavigationBarItem覆盖了我的自定义控制器。

0
0 Comments

问题出现的原因是用户想要在默认的backBarButtonItem上更改颜色或图像。下面是解决这个问题的方法:

1. 实现一个自定义按钮,覆盖默认的导航栏行为。可以参考教程:www.switchonthecode.com

2. 在每个需要自定义按钮的视图中实现以下代码:osmorphis.blogspot.com

这样就可以改变默认backBarButtonItem的颜色或图像了。

0