У меня возникла проблема при реализации UITableView
в приложении iOS, над которым я работаю (iOS SDK 4.2). Если я коснусь ячейки в представлении таблицы, а затем прокрутите представление так, чтобы ячейка покинула экран, когда она вернется к просмотру, последняя выбранная ячейка была повторно выбрана.UITableViewCell переустанавливается при прокрутке назад на экране
Чтобы проверить это, я создал новый проект View Based Application, влачил UITableView
в Interface Builder и установите контроллер представления в качестве источника данных вида таблицы и делегата, а затем вставьте следующий код в контроллере представления:
- (NSInteger)numberOfSectionsInTableView:(UITableView *) tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *) tableView numberOfRowsInSection:(NSInteger) section {
return 12;
}
- (UITableViewCell *)tableView:(UITableView *) tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath {
static NSString *cellID = @"aCellID";
UITableViewCell *aCell = [tableView dequeueReusableCellWithIdentifier:cellID];
if (!aCell) {
aCell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID] autorelease];
}
aCell.textLabel.text = [NSString stringWithFormat:@"Cell %d", indexPath.row +1];
return aCell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *aCell = [tableView cellForRowAtIndexPath:indexPath];
[aCell setSelected:NO animated:YES];
}
При запуске (в симуляторе или на устройстве), если я должен был нажать любую ячейку (например, ячейку 12), она будет выбрана и отменена. После этого, если в текущей выбранной таблице нет ячеек, если я прокручиваю представление так, чтобы последняя выбранная ячейка (12 в этом случае) покинула экран, она снова будет выбрана, когда она снова появится.
Является ли это предполагаемым поведением по умолчанию для UITableView
? Или, возможно, ошибка в моей реализации? Что было бы лучшим способом отменить выбор этой ячейки в этой ситуации?
спасибо! Я была такая же проблема. – Marky
Вы все еще можете воспроизвести анимацию, где она выбирает ее на короткое время, а затем снимает ее сразу после? – chourobin
@ cr54 Да, вы все еще можете получить этот эффект анимации, как это: - (Недействительными) Tableview: (UITableView *) Tableview didSelectRowAtIndexPath: (NSIndexPath *) indexPath { [Tableview deselectRowAtIndexPath: indexPath анимированный: YES]; } –