Чтобы ограничить пользователя только одним выбором, то есть создать эксклюзивный список только из одного выбора, вы можете выполнить следующие шаги:
Во-первых, в вашем файле .h должен быть объявлен глобальный путь индекса для отслеживания уже выбранной ячейки ->
NSIndexPath *oldIndexPath;
При создании ячеек обязательно укажите тип аксессуара none, чтобы по умолчанию ни одна ячейка не была выбрана при просмотре таблицы;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellIdentifier"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CallIdentifier"];
cell.accessoryType = UITableViewCellAccessoryNone;
}
return cell;
}
Наконец, в методе делегата didSelectRowAtIndexPath добавьте следующий код, который удалит флажок из уже выбранной ячейки, и добавьте флажок к вновь выбранной ячейке.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if (oldIndexPath==nil) { // No selection made yet
oldIndexPath=indexPath;
[cell setAccessoryType:UITableViewCellAccessoryCheckmark];
}
else {
UITableViewCell *formerSelectedcell = [tableView cellForRowAtIndexPath:oldIndexPath]; // finding the already selected cell
[formerSelectedcell setAccessoryType:UITableViewCellAccessoryNone];
[cell setAccessoryType:UITableViewCellAccessoryCheckmark]; // 'select' the new cell
oldIndexPath=indexPath;
}
}
Надеюсь, это сработает! :)