Как я могу изменить заголовок UIBarButtonItem? У меня есть следующий код, который вызывается при нажатии кнопки« изменить »на моем UINavigationBar .
-(void)editButtonSelected:(id)sender {
NSLog(@"edit button selected!");
if(editing) {
NSLog(@"notediting");
[super setEditing:NO animated:NO];
[tableView setEditing:NO animated:NO];
[tableView reloadData];
[rightButtonItem setTitle:@"Edit"];
[rightButtonItem setStyle:UIBarButtonItemStylePlain];
editing = false;
}
else {
NSLog(@"editing");
[super setEditing:YES animated:YES];
[tableView setEditing:YES animated:YES];
[tableView reloadData];
[rightButtonItem setTitle:@"Done"];
[rightButtonItem setStyle:UIBarButtonItemStyleDone];
editing = true;
}
}
"Редактировать" кнопка меняет цвет (поэтому линия, задающая стиль, работает), однако строка, задающая заголовок кнопки, не работает.
Если вы посмотрите на документацию по свойству title
, явно упоминается, что вы должны установить его, прежде чем назначать его на панель навигации. Вместо того, чтобы делать то, что вы делаете прямо сейчас, вы можете использовать два элемента панели кнопок - один для готового и один для редактирования, и установить их альтернативно.
У меня была эта проблема, и я решил ее, установив стиль UIBarButtonItem в пользовательский тип при его инициализации. Затем заголовки будут устанавливаться при изменении значений заголовков.
Вы также можете установить значение возможное название в методе viewDidLoad, чтобы гарантировать правильный размер кнопки для всех возможных названий, которые она может иметь.
Попробуйте:
UIButton *rightButton;
rightButton = (UIButton*)self.navigationItem.rightBarButtonItem.customView;
[rightButton setTitle:@"Done" forState:UIControlStateNormal];
Потому что rightBarButtonItem.customView == “the button your added”
.