Я пытаюсь настроить список объектов, которые могут быть отредактированы. У меня есть основное представление с UINavigationBar наверху и UITableView непосредственно под ним. Я хотел бы иметь свое изменение кнопки "редактирования" в "сделанной" кнопке по щелчку, но я не могу выяснить, как сделать это.
Если я мог бы сделать это в коде (не, это соединяет интерфейсом с разработчиком), я мог просто заменить его, но я не могу даже сделать этого. Я видел, что некоторый код использовать [self.navigationItem], но в моем случае сам является UIView.
Это также чувствует себя немного нечетным для использования UINavigationBar, когда я не хочу навигацию (это - только одна страница), но я хочу панель инструментов с заголовком, и и кнопка, таким образом, я не думаю действительно, имеет выбор.
Я создаю одну кнопку, которая может изменяться с Edit на Done.Это совет из книги More iPhone Development.
- (void)viewDidLoad {
[super viewDidLoad];
UIBarButtonItem *editButton = self.editButtonItem;
[editButton setTarget:self];
[editButton setAction:@selector(toggleEdit)];
self.navigationItem.leftBarButtonItem = editButton;
}
И метод toggleEdit
- (IBAction)toggleEdit {
BOOL editing = !self.tableView.editing;
self.navigationItem.rightBarButtonItem.enabled = !editing;
if (editing) {
self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Done", @"Done");
//Added in the edition for this button has the same color of the UIBarButtonSystemItemDone
self.navigationItem.leftBarButtonItem.style = UIBarButtonItemStyleDone;
} else {
self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Edit", @"Edit");
//Added in the edition for this button has the same color of the UIBarButtonSystemItemDone
self.navigationItem.leftBarButtonItem.style = UIBarButtonItemStylePlain;
}
[self.tableView setEditing:editing animated:YES];
}
Тогда вам не нужно ничего заменять.
Понятно! Похоже, вы можете перейти к UINavigationItem с помощью свойства topItem. Просто нужно было прочитать документацию, как всегда!
Когда вы используете self.editButtonItem
, вам не нужно менять стиль и текст кнопки, это делается автоматически. Попробуйте удалить этот код, он все равно будет работать :)