У меня есть UITableView, в котором некоторые ячейки отмечены с помощью UITableViewCellAccessoryCheckmark при инициализации представления.UITableViewCell: как проверить тип accessoriesType во всех ячейках?
Когда пользователь выбирает другую строку, я должен проверить, было ли достигнуто максимальное количество выбранных строк. Для этого я использовал код ниже:
- (NSInteger)tableView:(UITableView *)tableView numberOfSelectedRowsInSection:(NSInteger)section{
NSInteger numberOfRows = [self tableView:tableView numberOfRowsInSection:section];
NSInteger numberOfSelectedRows = 0;
for (int i = 0; i < numberOfRows; i++) {
UITableViewCell *otherCell = [tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:section]];
if (otherCell.accessoryType == UITableViewCellAccessoryCheckmark) {
numberOfSelectedRows++;
}
}
return numberOfSelectedRows;
}
Если мое число строк, как в примере 20, переменная numberOfRows правильно выставиться с 20. Допустим, что 13 строк уже отмечены UITableViewCellAccessoryCheckmark. Таким образом, numberOfSelectedRows должно быть 13 после цикла, но рассматриваются только отмеченные и VISIBLE. Итак, если у меня есть 9 ячеек и 7 отмечены, числоOfSelectedRows возвращает 7 вместо 13 (но для итерации 20 раз, как и ожидалось).
Правильно ли это поведение UITableView или это ошибка симулятора iPhone?
Заранее спасибо.