UitableView в режиме редактирования - кнопка «Редактировать» не изменяет статус

StackOverflow https://stackoverflow.com/questions/5365074

  •  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 И посмотри, что там происходит.

Редактировать

Хорошо, после понимания вашего вопроса, посмотрите на это нить

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top