UitableView в режиме редактирования - кнопка «Редактировать» не изменяет статус
-
27-10-2019 - |
Вопрос
У меня есть класс uiviewcontroller, с таблицей. В ViewDidload:
UIBarButtonItem *editIcon = [[[UIBarButtonItem alloc]
initWithBarButtonSystemItem: UIBarButtonSystemItemEdit
target:self
action:@selector(toggleEditMode)] autorelease];
В методе Te 'ToggleEditMode':
-(void)toggleEditMode{
if(self.theTable.editing) {
[theTable setEditing:NO animated:YES];
[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStylePlain];
}
else if ([callsArray count]!=0){
[theTable setEditing:YES animated:YES];
[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleDone];
}
}
Проблема в том, что кнопка «Редактировать» не меняется «сделано». Чего не хватает? У меня все методы объявлены:
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
Спасибо,
Rl
Решение
Почему бы не использовать -editButtonItem
Uiviewcontroller напрямую? И переопределить -setEditing:animated:
метод
// Assign the system's edit button,
// it will change style when different edit status.
self.navigationItem.rightBarButtonItem = self.editButtonItem;
// The editButtonItem will invoke this method.
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated:animated];
if (editing) {
// Execute tasks for editing status
} else {
// Execute tasks for non-editing status.
}
}
Другие советы
Это потому, что вы только устанавливаете стиль кнопки (не ее текст) при переключении режимов. Вы должны сделать это (или эквивалентно):
-(void)toggleEditMode{
self.navigationItem.rightBarButtonItem.title = self.tableView.editing ? @"Done" : @"Edit";
Уверен callsArray
не пуст?
Поместите точку отдыха внутрь toggleEditMode
И посмотри, что там происходит.
Редактировать
Хорошо, после понимания вашего вопроса, посмотрите на это нить
Не связан с StackOverflow