it-swarm.com.ru

Как изменить текст BarButtonItem на панели навигации?

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

enter image description here

Для этого я добавил NavigationBar в верхнюю часть представления, а затем добавил 2 элемента панели кнопок в дизайнере XCode. Я установил идентификатор кнопки слева для добавления, для кнопки справа - для редактирования.

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

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

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

11
AngryHacker

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

14
AngryHacker

Почему бы вам не попробовать изменить свойство 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 назад

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

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

5
Anshuk Garg

Работает для меня так: IBarButtonItem * 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"];
  }
}
4
Paresh Navadiya

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

Swift 3.0:

self.barButton.title = "New title"
1
Josh O'Connor

Переустановите кнопку, как показано ниже. ,.

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