нажатие на одну строку выберет несколько строк - PullRequest
1 голос
/ 05 февраля 2012

У меня странная проблема в виде таблицы. Я хочу выбрать строки и хочу показать только галочку. У меня есть таблица с несколькими разделами. Выбор строки и отображение галочки - это нормально, но на 10 строк вниз по таблице, эта строка также будет выделена ??? При выборе более одной строки, опять же, на 10 строк вниз, появляется несколько вариантов выбора.

Я использую:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)newIndexPath {
    [tableView deselectRowAtIndexPath:[tableView indexPathForSelectedRow] animated:NO];
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:newIndexPath];
    if (cell.accessoryType == UITableViewCellAccessoryNone) {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;

        // Reflect selection in data model
    } else if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
        cell.accessoryType = UITableViewCellAccessoryNone;
        // Reflect deselection in data model
    }
}

1 Ответ

0 голосов
/ 05 февраля 2012

Это не другая выбранная строка, это та же ячейка, помеченная галочкой, которая используется повторно.В tableView:didSelectRowAtIndexPath: вы используете ячейку для сохранения состояния.В tableView:cellForRowAtIndexPath: вы не указываете, должна ли строка иметь галочку или нет.

То, что вы, вероятно, захотите сделать, это иметь ivar NSMutableSet, а в didSelectRow.. добавить или удалить.indexPath из набора, в зависимости от его проверенного статуса.Затем в cellForRow.. установите свойство accessoryType на основе членства indexPath в наборе.

Редактировать Извините, я не уловил комментарии, где вы сохраняете состояниечтобы в модели данных.В этом случае все, что вам нужно сделать, это добавить чек в cellForRow....Так как это общий вопрос, я оставлю оригинальный ответ.

...