У меня в настоящее время есть UIAlertview, отображающий сгруппированное табличное представление, и я потратил всю неделю, чтобы заставить его работать как надо, я оставил то, что должно было быть самым простым, до последнего, добавив аксессуары. Все, что я хочу, это чтобы строка отображалась как проверенная, когда она нажата. Это звучит достаточно просто и на первый взгляд работает отлично. Если я коснусь ячейки в 0,0, она будет отмечена, НО, если я затем прокручиваю вниз, я также получу 2,1, отмеченные 3,6 (и 0,0 снова не отмеченные). Я посмотрел на Этот вопрос и проверил их код на другой сгруппированной таблице, и она отлично работает, но не изменила мою таблицу предупреждений.
Это код, который я использую
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
Я не вижу способа, которым это может изменить более одной ячейки. Я поставил точку останова, и она вызывается только один раз за нажатие.
Метод Cellforrowatindex:
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";
NSArray *listData =[self.data objectForKey:
[self.sortedKeys objectAtIndex:[indexPath section]]];
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier: SimpleTableIdentifier];
if(cell == nil) {
cell = [[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:SimpleTableIdentifier] autorelease];
}
NSUInteger Row = [indexPath row];
cell.textLabel.text = [listData objectAtIndex:Row];
return cell;
}
Спасибо.