Странные сгруппированные проблемы с аксессуарами для просмотра таблиц - PullRequest
1 голос
/ 19 марта 2011

У меня в настоящее время есть 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;
}

Спасибо.

1 Ответ

1 голос
/ 19 марта 2011

Я думаю, что поскольку вы повторно используете UITableViewCells, после изменения одной ячейки accessoryType это может повлиять на остальные ячейки в табличном представлении.

Внутри вашего cellForRowAtIndexPath после того, как вы получите объект cell, сделайте следующее:

cell.accessoryType = UITableViewCellAccessoryNone

Надеюсь, это поможет.

...