Не удается выбрать UITableViewCell, когда установлено TableView setEditing

Я хочу иметь возможность выбрать несколько строк, как почтовое приложение по умолчанию, показанное ниже:

У меня есть кнопка под названием edit, которая вызывает

[self.myTableView setEditing:YES animated:YES]

Кнопка редактирования успешно показывает кружки слева от ячеек, как почтовое приложение, как показано выше. Однако когда я на самом деле выбираю одну из строк, ничего не происходит. Красная галочка не появляется в круге, как я ожидал. Почему не отображается красная галочка?

#pragma mark - UITableViewDataSource Methods

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"];
    }

    cell.textLabel.text = @"hey";

    return cell;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 3;
}

#pragma mark - UITableViewDelegate Methods

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    return 3;
}

#pragma mark - Private Methods

- (IBAction)editButtonTapped:(id)sender {
    if (self.myTableView.editing) {
        [self.myTableView setEditing:NO animated:YES];
    }
    else {
        [self.myTableView setEditing:YES animated:YES];
    }
}

1 ответ

Решение

Вы должны явно установить выбор, который будет включен в режиме редактирования:

[self.tableView setAllowsSelectionDuringEditing:YES];

Или же

[self.tableView setAllowsMultipleSelectionDuringEditing:YES];

Согласно документам: эти свойства установлены в NO по умолчанию.

Если значение этого свойства - ДА, пользователи могут выбирать строки во время редактирования. Значением по умолчанию является НЕТ. Если вы хотите ограничить выбор ячеек независимо от режима, используйте allowSelection.

Кроме того, следующий фрагмент кода может вызвать проблемы с вашим выбором, потому что он сразу отменяет выделение строки, как только она была выбрана.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}
Другие вопросы по тегам