Как изменить текст BarButtonItem на NavigationBar?

Я пытаюсь создать список элементов, которые можно редактировать. Что-то вроде этого:

enter image description here

С этой целью я добавил навигацию в верхнюю часть представления, а затем добавил 2 элемента кнопки бара в дизайне XCode. Я установил идентификатор кнопки слева, чтобы добавить, для кнопки справа на "Правка".

Когда я нажимаю "Изменить", я хочу изменить текст на "Готово". Я пробовал разные способы, например. btnEdit.Title = "Done", но это просто не требуется.

Я видел несколько сообщений в блогах, рекомендующих .SetTitle, но UIButtonBarItem не имеет этого метода (по крайней мере, в MonoTouch).

Итак, как я могу изменить заголовок кнопки "Изменить"?

Ответ 1

Я решил это. Ключ был в том, что я установил идентификатор кнопки "Редактировать" на системное значение (например, UIBarButtonSystemItemEdit), и вы не можете изменить текст этих (имеет смысл сейчас). Я изменил идентификатор на пользовательский и установил. Титул работал нормально.

Ответ 2

Почему бы вам не попробовать изменить свойство navigationItem.rightbarButtonItem?

1. Настройте две кнопки: одну для редактирования и одну для завершения

 UIBarButtonItem*editButton=[[UIBarButtonItem alloc] initWithTitle:@"Edit" style:UIBarButtonItemStylePlain target:self action:@selector(editAction)];

 UIBarButtonItem*doneButton=[[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(doneAction)];

2. И везде, где это необходимо, в editAction предпочтительнее изменить rightBarButtonItem как:

self.navigationItem.rightBarButtonItem=doneButton;

И если вам нужна editButton back

 self.navigationItem.rightBarButtonItem=editButton;

Ответ 3

if ([self.navigationItem.rightBarButtonItem.title isEqualToString:@"Edit"]) 
{
    self.navigationItem.rightBarButtonItem.title= @"Done";
}

надеюсь, что это поможет. счастливое кодирование:)

Ответ 4

Работает для меня как UIBarButtonItem * btnEdit; является членом класса в .h;

btnEdit = [[UIBarButtonItem alloc]initWithTitle:@"Edit" style:UIBarButtonItemStyleBordered target:self action:@selector(btnEditClicked)];
self.navigationItem.leftBarButtonItem = btnEdit;
//[btnEdit release];

Теперь вызывается селектор:

-(void)btnEditClicked
{
  if([btnEdit.title isEqualToString:@"Edit"])
  {
    [btnEdit setTitle:@"Done"];
  }
  else
  {
    [btnEdit setTitle:@"Edit"];
  }
}

Ответ 5

Управляйте перетаскиванием с панели на файл (с помощью редактора помощников), создайте выход (в этом случае его называете "barButton" ). Затем добавьте следующее:

Swift 3.0:

self.barButton.title = "New title"

Ответ 6

Новая кнопка, как показано ниже..

self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "title", style: UIBarButtonItemStyle.plain, target: self, action: #selector(actionMethod))