12

如果为 tableview 启用了编辑模式,它会显示一个标题为 Edit 的按钮,按下它时会将标题更改为 done

我想知道是否有办法将完成按钮标题更改为其他内容?

我已经更改了完成按钮的标题。

我使用的代码是

self.navigationItem.rightBarButtonItem = self.editButtonItem;
self.editButtonItem.title = @"Change";

现在编辑是变化

如何完成其​​他事情?

4

3 回答 3

10

您可以像这样更改编辑按钮的标题:-

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

它的工作方式类似于编辑:-

在此处输入图像描述

在此处输入图像描述

于 2012-11-17T10:47:02.847 回答
8

这是为 Swift 更改它的方法

override func setEditing (editing:Bool, animated:Bool)
{
    super.setEditing(editing,animated:animated)
    if (self.editing) {
        self.editButtonItem().title = "Editing"
    }
    else {
        self.editButtonItem().title = "Not Editing"
    }
}
于 2014-06-16T23:19:58.727 回答
4

基于Nitin 的回答,我建议采用一种稍微不同的方法,即使用内置UIButtonBar系统项。

这将为您的 UI 提供系统外观和感觉。例如,停止编辑的标准“完成”按钮在 iOS 8 上应该具有特定的粗体外观。Apple 将来可能会更改这些样式。通过使用系统定义的按钮,您的应用程序将自动选择当前的审美。

这种方法还为您提供免费的字符串本地化。Apple 已经为您将系统按钮标题翻译成 iOS 支持的数十种语言。

这是我得到的代码:

-(IBAction) toggleEditing:(id)sender
{
  [self setEditing: !self.editing animated: YES];
}

-(void) setEditing:(BOOL)editing animated:(BOOL)animated
{
  [super setEditing: editing animated: animated];

  const UIBarButtonSystemItem systemItem = 
    editing ? 
    UIBarButtonSystemItemDone : 
    UIBarButtonSystemItemEdit;

  UIBarButtonItem *const newButton = 
    [[UIBarButtonItem alloc] 
      initWithBarButtonSystemItem: systemItem 
                           target: self 
                           action: @selector(toggleEditing:)];

  [self.navigationItem setRightBarButtonItems: @[newButton] animated: YES];
}

这里的示例适用于您UIViewController托管在 a 中的情况UINavigationController,因此有一个UINavigationItem实例。如果您不这样做,则需要以适当的方式更新栏项目。

在您viewDidLoad使用以下调用来配置准备使用的编辑按钮:

[self setEditing: NO animated: NO];
于 2014-12-29T01:22:23.117 回答