2012-02-05 2 views
1

У меня странная проблема в моем представлении таблицы. Я хочу выбрать строки и только хочу показать галочку. У меня есть табличное представление с несколькими разделами. Выбор строки и отображение галочки в порядке, но 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 
    } 
} 

ответ

0

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

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

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

Смежные вопросы