Проблема, с которой вы сталкиваетесь, вызвана повторным использованием ячейки.
По сути, если ваш UITableView имеет, скажем, 50 ячеек для отображения, он создает только 10 и затем использует их по мере прокрутки вниз / прокрутки вверх.Поэтому, какие бы изменения вы ни делали в ячейке в строке 0, она будет повторно отображаться для строки 11, поскольку TableView использует ту же ячейку и т. Д.
Что вы хотите сделать, это отслеживать, какие игроки быливыбран независимо от клетки.Этого легко добиться, создав коллекцию, скажем, NSMutableArray или NSMutableDictionary, которая будет хранить значения BOOL в объектах NSNumber, например.
NSMutableArray *players = [NSMutableArray arrayWithCapacity:50];
for (int i = 0; i < 50; i++) {
[players addObject:[NSNumber numberWithBool:NO]];
}
Затем в didSelectRowAtIndexPath: (NSIndexPath *) indexPath вместо того, чтобы работать с ячейкой, вы просто измените значение соответствующего объекта NSNumber.
Затем в cellForRowAtIndexPath: (NSIndexPath *) indexPath вы настраиваете принадлежность ячейки, проверяя соответствующуюзапись в коллекции игроков.
Или, если вы действительно, очень упрямый, вы можете заменить (ЭТО НЕ РЕКОМЕНДУЕТСЯ) следующую строку из cellForRowAtIndexPath: (NSIndexPath *) indexPath :
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
с:
UITableViewCell *cell = nil;