iPhone - UITableView:更改默认编辑按钮名称

Oli*_*ver 3 iphone label edit uitableview

我的navigationBar中有一个常用的editButtonItem(由系统创建),我想更改它的名字.我在TableViewController中写了这行:

- (void)viewDidLoad
{
    [super viewDidLoad];

    [Some code...]

    self.navigationItem.rightBarButtonItem = self.editButtonItem;
    self.navigationItem.rightBarButtonItem.title = @"New name";
}
Run Code Online (Sandbox Code Playgroud)

这样可行,但在进入和退出编辑模式时,将恢复其系统名称.我试图再次强迫它didEndEditingRowAtIndexPath,但没有成功......

如何修复此自定义名称而无需在代码中自己创建按钮

pix*_*eak 18

@ Bojan的方法很接近,但效率非常低,因为每一行都会调用它.只需在开头更改标题,viewDidLoad另外执行以下操作:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
    // Make sure you call super first
    [super setEditing:editing animated:animated];

    if (editing)
    {
        self.editButtonItem.title = NSLocalizedString(@"Cancel", @"Cancel");
    }
    else
    {
        self.editButtonItem.title = NSLocalizedString(@"Edit", @"Edit");
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 很好的主意!另外:在`viewDidLoad`上调用self.editing = NO! (3认同)

And*_*iot 5

如果您不喜欢现有的编辑按钮项,请创建自己的编辑按钮项.

在标题中声明一个ivar editItem,然后像这样创建项目:

    editItem = [[UIBarButtonItem alloc] initWithTitle:@"New Name" style:UIBarButtonItemStyleBordered target:self action:@selector(toggleEditing)]
Run Code Online (Sandbox Code Playgroud)

in -toggleEditing,调用

[self setEditing:!self.editing animated:YES]
Run Code Online (Sandbox Code Playgroud)

并且还更新按钮的标题(以及可选的外观)以反映编辑状态.