У меня есть табличное представление, которое можно развернуть при выборе ячейки и свернуть при повторном выборе. Когда вы выберете, ячейка должна развернуться и отобразить ярлык, и когда вы выберете ее снова, она скроется и скроет ярлык. Расширение и свертывание отлично работают, но если я прокручиваю табличное представление после расширения ячейки, он ведет себя странно. Как только он выходит из представления и возвращается, ячейка будет иметь увеличенную высоту ячейки, но метка, которая должна отображаться в расширенной ячейке, скрыта. Если я снова выберу ячейку, она обрушится и отобразит метку. Я использую,Высота UITableviewCell не сбрасывается при прокрутке
- (CGFloat)tableView:(UITableView *)t heightForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [self tableView:t cellForRowAtIndexPath:indexPath];
if([self cellIsSelected:indexPath])
return cell.frame.size.height+35;
return cell.frame.size.height;
}
- (BOOL)cellIsSelected:(NSIndexPath *)indexPath {
// Return whether the cell at the specified index path is selected or not
NSNumber *selectedIndex = [self.selectedIndexes objectForKey:indexPath];
return selectedIndex == nil ? FALSE : [selectedIndex boolValue];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// Deselect cell
NSLog(@"Select cell:%@",indexPath);
[self.tableView deselectRowAtIndexPath:indexPath animated:TRUE];
if([self pickTaskForIndexPath:indexPath].productSpecialMessage){
BOOL isSelected = ![self cellIsSelected:indexPath];
NSNumber *selectedIndex = [NSNumber numberWithBool:isSelected];
[self.selectedIndexes setObject:selectedIndex forKey:indexPath];
PickTaskTableviewCell *cell= [self.tableView cellForRowAtIndexPath:indexPath];
cell.message.hidden=false;
cell.messageLabel.text=[self pickTaskForIndexPath:indexPath].productSpecialMessage;
cell.messageLabel.lineBreakMode=NSLineBreakByTruncatingTail;
cell.messageLabel.numberOfLines=3;
if(cell.messageLabel.hidden==true){
cell.messageLabel.hidden = false;
} else {
cell.messageLabel.hidden = true;
}
NSLog(@"message:%@",cell.messageLabel.text);
[cell layoutIfNeeded];
}
self.tableView.rowHeight=UITableViewAutomaticDimension;
[self.tableView beginUpdates];
[self.tableView endUpdates];
}
indexPath добавляется к selectedIndexes на didSelectRowAtIndexPath Пожалуйста, помогите мне
Если проблема с ярлык, пожалуйста, напишите код, который показывает (скрывает) ярлык при выборе (отмена выбора). – danh
добавлен метод didSelectRowAtIndexPath –