1
我有一個tableview,可以在選擇單元格時展開,並在再次選擇時摺疊。選擇時,單元格應展開並顯示一個標籤,當您再次選擇時,它會摺疊並隱藏標籤。展開和摺疊工作正常,但如果我擴大單元格後滾動tableview它表現奇怪。一旦它退出視圖並返回,單元格將具有展開的單元格的高度,但應該在展開的單元格中顯示的標籤是隱藏的。如果我再次選擇該單元格,它會摺疊並顯示標籤。我用,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方法 –