设置UIBarButtonItem不改变标题,只改变样式

我有一个UIBarButtonItem在右上angular说'编辑'。 点击后,这个代码被称为 – 我知道这是因为该button是底气。 但是,button的标题不会更改。 这是我的代码:

  // set to not editing and change buttons [self setEditing:YES animated:YES]; UIBarButtonItem *doneButton = (UIBarButtonItem *)sender; [doneButton setTitle:@"Done"]; [doneButton setStyle:UIBarButtonItemStyleDone]; self.navigationItem.rightBarButtonItem = doneButton; 

编辑2:

下面的代码是做我想做的,但是第一次点击编辑button,没有任何反应。

 -(void)editButton:(id)sender { self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Edit" style: UIBarButtonItemStylePlain target:self action:@selector(edit:)]; } -(void) edit:(UIBarButtonItem *) barBtnItem { // if not editing if (![self isEditing]) { [self setEditing:YES]; barBtnItem.tag = 1; [self.navigationItem.rightBarButtonItem setTitle:@"Done"]; } else { [self setEditing:NO]; barBtnItem.tag = 0; [self.navigationItem.rightBarButtonItem setTitle:@"Edit"]; } } 

只要做到这一点

 UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithTitle:@"Edit" style: UIBarButtonItemStyleBordered target:self action:@selector(edit:)]; barButton.tag = 0; barButton.possibleTitles = [NSSet setWithObjects:@"Edit", @"Done", nil]; 

只需按一下即可改变状态。 简单的事情。

 -(void) edit:(UIBarButtonItem *) barBtnItem { if (barBtnItem.tag == 0) { barBtnItem.tag = 1; [self.navigationItem.rightBarButtonItem setTitle:@"Done"]; } else { barBtnItem.tag = 0; [self.navigationItem.rightBarButtonItem setTitle:@"Edit"]; } } 

那这个呢:

 self.navigationItem.rightBarButtonItem = self.editButtonItem; 

我觉得它几乎做你想做的事情。

当点击时,它变成“完成”,然后再次点击时,返回到“编辑”。 此外,它相应地设置视图控制器编辑属性。

你可以通过下面的代码来完成

 UIBarButtonItem *rightBarButton = [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(doneClicked:)]; self.navigationItem.rightBarButtonItem = rightBarButton; 

最简单的解决scheme:只需将BarButtonItem的标识符更改为自定义。

从系统更改types:编辑到自定义

从UIBarButtonItem引用的 “title”属性

在将项目添加到条之前,您应该设置此属性。 默认值是零。

检查这个qn也