1.初始化
在viewDidLoad里,为navigationItem添加名称为“添加分栏”的按钮
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.navigationItem.rightBarButtonItem.title = @"添加分栏";
[self.navigationItem.rightBarButtonItem initWithBarButtonSystemItem:UIBarButtonSystemItemUndo
target:self
action:@selector(myAction)];
}
2.试图更改按钮名称失败
尝试通过如下方式修改按钮的名称,但是失败了
-(void)onSelectionChanged:(id)selection
{
self.navigationItem.rightBarButtonItem.title = @"编辑";
}
3.原因分析
为何直接设置backBarButtonItem的title无效呢?
查看苹果文档UIBarButtonItem的父类UIBarItem的title属性描述:
You should set this property before adding the item to a bar. The default value is nil.故无法修改其title,只能重置这个控件本身。
4.正确代码
4.1思路一
单单修改标题不行,是不是还应该再调用一下初始化方法呢?代码如下,最终还是不行啊,无语了
self.navigationItem.rightBarButtonItem.title = @"编辑";
[self.navigationItem.rightBarButtonItem initWithBarButtonSystemItem:UIBarButtonSystemItemUndo
target:self
action:@selector(myAction)];
4.1思路二
既然只改标题不起作用,那就把整个按钮换掉吧!
创建一个新的按钮,用这个新按钮替换self.navigationItem.rightBarButtonItem,这次总算可以了,谢天谢地!!!
UIBarButtonItem *temporaryBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemUndo
target:self
action:@selector(changeWellColumnAction)];
temporaryBarButtonItem.title = @"编辑";
self.navigationItem.rightBarButtonItem = temporaryBarButtonItem;
[temporaryBarButtonItem release];
5.总结
该问题中思路一不成功的原因还是没有找到,思路二有没有什么副作用也不是很清楚,欢迎各路大神不吝赐教!!!