Единственная проблема, которую я вижу с тем, что у вас есть сейчас, заключается в том, что он использует ячейку для сохранения состояния. Решение о том, давать ли чек ячейке или нет, вероятно, должно основываться не на ячейке, а на данных, отображаемых в ячейке, например:
if (vehicle.selected) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
Если вы хотите сделать это немного более загадочным, вы можете:
cell.accessoryType = vehicle.selected ? UITableViewCellAccessoryCheckmark
: UITableViewCellAccessoryNone;
Некоторые люди любят эту запись, другие ненавидят ее. Проверьте ваш местный документ по стандартам кодирования, чтобы узнать, является ли такой код приемлемым перед использованием.