Как изменить название кнопки "Редактировать/Готово" в UINavigationBar

Если режим редактирования включен для просмотра таблицы, он показывает кнопку под названием "Правка", при нажатии на нее она изменяет заголовок на выполненный

Мне было интересно, есть ли способ изменить название Done Button на что-то еще?

i уже изменил заголовок для сделанной кнопки.

используемый мной код

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

Теперь Edit is Change

Как сделать Готово к чему-то еще?

Ответ 1

Вы можете изменить заголовок кнопки редактирования следующим образом: -

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

работает как править: -

enter image description here

К

enter image description here

Ответ 2

Вот способ его изменения для 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"
    }
}

Ответ 3

Основываясь на Nitin answer Я предлагаю немного другой подход, который использует встроенные элементы UIButtonBar.

Это даст вашему интерфейсу внешний вид системы. Например, стандартная кнопка "Готово" для прекращения редактирования должна иметь определенный вид жирный на iOS 8.

Этот подход также предоставляет вам бесплатную локализацию строк.

Вот код, который у меня есть:

-(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 размещен в UINavigationController, и поэтому имеет экземпляр UINavigationItem. Если вы этого не сделаете, вам необходимо соответствующим образом обновить элемент панели.

В вашем viewDidLoad используйте следующий вызов, чтобы настроить кнопку редактирования, готовую для использования:

[self setEditing: NO animated: NO];