如何更改默认的backBarButtonItem上的颜色/图像?
如何更改默认的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
问题的原因是,想要在默认的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覆盖了我的自定义控制器。
问题出现的原因是用户想要在默认的backBarButtonItem上更改颜色或图像。下面是解决这个问题的方法:
1. 实现一个自定义按钮,覆盖默认的导航栏行为。可以参考教程:www.switchonthecode.com
2. 在每个需要自定义按钮的视图中实现以下代码:osmorphis.blogspot.com
这样就可以改变默认backBarButtonItem的颜色或图像了。