设置UIBarButtonItem不更改标题,仅更改样式

时间:2014-02-04 08:23:11

标签: ios iphone objective-c uibarbuttonitem

我右上方有一个UIBarButtonItem,上面写着“编辑”。单击时,会调用此代码 - 我知道这是因为按钮是大胆的。但是,按钮的标题不会更改。这是我的代码:

 // 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:

以下代码正在执行我想要的操作,但是当我第一次单击编辑按钮时,没有任何反应。

-(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"];
    }
}

6 个答案:

答案 0 :(得分:4)

这个怎么样:

self.navigationItem.rightBarButtonItem = self.editButtonItem;

我认为它几乎可以满足您的需求。

点按时更改为“完成”,再次点按时更改为“编辑”。此外,它相应地设置视图控制器编辑属性。

答案 1 :(得分:2)

就这样做

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"];
    } 
}

答案 2 :(得分:1)

您可以通过代码以及

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

从系统更改类型:编辑为自定义

答案 5 :(得分:-1)

来自UIBarButtonItem reference

的“title”属性
  

您应该在将项目添加到栏之前设置此属性。该   默认值为nil。

检查this qn also