У меня в приложении для iPhone есть сгруппированное представление таблицы, которое содержит список всех 24 часов дня. Когда пользователь выбирает одну из ячеек в табличном представлении, он показывает галочку в своем дополнительном представлении и сохраняет данные через NSUserDefaults. Когда пользователь загружает представление вперед, это означает, что мне нужно извлечь информацию из NSUserDefaults и отобразить галочку в соответствующей ячейке. Это прекрасно работает, пока я не начну прокручивать в представлении. Тогда это происходит:
![enter image description here](https://i.stack.imgur.com/l4tpD.png)
Я настроил didSelectRowAtIndexPath
таким образом, чтобы при выборе одной строки все остальные были отменены. Это работает просто отлично, но, просто прокручивая список, можно выбрать случайные элементы. Если я продолжу прокручивать вверх и вниз несколько раз, все элементы будут выбраны. Если я щелкну одну из ячеек, эта ячейка будет выделена, а остальные будут отменены (так и должно быть).
Но почему клетки выбираются просто прокруткой? Вот мой cellForRowAtIndexPath
метод, где проблема, вероятно, находится:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
NSString *cellValue;
if (indexPath.row == 0) {
cellValue = @"00:00";
} else if (indexPath.row == 1) {
cellValue = @"01:00";
} else if (indexPath.row == 2) {
cellValue = @"02:00";
} else if (indexPath.row == 3) {
cellValue = @"03:00";
} else if (indexPath.row == 4) {
cellValue = @"04:00";
} else if (indexPath.row == 5) {
cellValue = @"05:00";
} else if (indexPath.row == 6) {
cellValue = @"06:00";
} else if (indexPath.row == 7) {
cellValue = @"07:00";
} else if (indexPath.row == 8) {
cellValue = @"08:00";
} else if (indexPath.row == 9) {
cellValue = @"09:00";
} else if (indexPath.row == 10) {
cellValue = @"10:00";
} else if (indexPath.row == 11) {
cellValue = @"11:00";
} else if (indexPath.row == 12) {
cellValue = @"12:00";
} else if (indexPath.row == 13) {
cellValue = @"13:00";
} else if (indexPath.row == 14) {
cellValue = @"14:00";
} else if (indexPath.row == 15) {
cellValue = @"15:00";
} else if (indexPath.row == 16) {
cellValue = @"16:00";
} else if (indexPath.row == 17) {
cellValue = @"17:00";
} else if (indexPath.row == 18) {
cellValue = @"18:00";
} else if (indexPath.row == 19) {
cellValue = @"19:00";
} else if (indexPath.row == 20) {
cellValue = @"20:00";
} else if (indexPath.row == 21) {
cellValue = @"21:00";
} else if (indexPath.row == 22) {
cellValue = @"22:00";
} else if (indexPath.row == 23) {
cellValue = @"23:00";
}
if ([[prefs valueForKey:@"quiet_hours_time_interval_from"] isEqualToString:cellValue]) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
cell.textLabel.textColor = [UIColor colorWithRed:72.0 / 255 green:104.0 / 255 blue:152.0 / 255 alpha:1];
}
cell.textLabel.text = cellValue;
return cell;
}
prefs
равно [NSUserDefaults standardUserDefaults]
, и я сохраняю точное значение (правильно) выбранной ячейки для клавиши quiet_hours_time_interval_from
.
Надеюсь, вы, ребята, можете помочь.