Я сделал следующее, чтобы динамически изменить заголовок UIBarButtonItem. В этой ситуации я не использую UIViewTableController и не могу использовать стандартную кнопку editButton. У меня есть представление с tableView, а также другие подпредставления и хотел эмулировать поведение ограниченного UIViewTableController.
- (void)InitializeNavigationItem
{
NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:2];
UIBarButtonItem* barButton;
barButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
target:self
action:@selector(addNewItem:)];
barButton.style = UIBarButtonItemStyleBordered;
[array addObject:barButton];
// --------------------------------------------------------------------------------------
barButton = [[UIBarButtonItem alloc] initWithTitle:@"Edit" style:UIBarButtonItemStyleBordered
target:self
action:@selector(editMode:)];
barButton.style = UIBarButtonItemStyleBordered;
barButton.possibleTitles = [NSSet setWithObjects:@"Edit", @"Done", nil];
[array addObject:barButton];
self.navigationItem.rightBarButtonItems = array;
}
- (IBAction)editMode:(UIBarButtonItem *)sender
{
if (self.orderTable.editing)
{
sender.title = @"Edit";
[self.orderTable setEditing:NO animated:YES];
}
else
{
sender.title = @"Done";
[self.orderTable setEditing:YES animated:YES];
}
}
Обратите внимание, что я не использовал UBarButtonSystemItemEdit barButton , вы не можете вручную изменить название этой кнопки, что имеет смысл.
Возможно, вы также захотите воспользоваться свойством возможного заголовка, чтобы при изменении заголовка размер кнопки не изменялся.
Если вы используете раскадровку / XIB для создания / установки этих кнопок, убедитесь, что для идентификатора элемента панели кнопок установлено значение Пользовательский для кнопки, для которой вы хотите управлять заголовком.