所以我有一个加载customTableCells的TableView。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier1 = @"ReviewTableCell";
reviewCell = [self.reviewTableView dequeueReusableCellWithIdentifier:CellIdentifier1];
if (reviewCell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ReviewTableCell" owner:self options:nil];
reviewCell = [nib objectAtIndex:0];
[reviewCell.replyButton addTarget:self action:@selector(reply:) forControlEvents:UIControlEventTouchUpInside]; <----- note! reply button function
}
reviewCell.replyButton.tag = indexPath.row;
if ([[_isExpandList objectAtIndex:indexPath.row]isEqual:@1])
{
[reviewCell.postView setHidden:NO];
}
else if ([[_isExpandList objectAtIndex:indexPath.row]isEqual:@0])
{
[reviewCell.postView setHidden:YES];
}
return reviewCell;
}
正如您在customTableCell上看到的,有一个按钮具有以下功能:
- (void)reply:(UIButton *)sender {
BOOL isExpand = [_isExpandList[sender.tag] boolValue];
[_isExpandList replaceObjectAtIndex:sender.tag withObject:@(!isExpand)];
if ([[_isExpandList objectAtIndex:sender.tag]isEqual:@1])
{
[self.reviewTableView beginUpdates];
[reviewCell.postView setHidden:NO];
[self.reviewTableView endUpdates];
}
else
{
[self.reviewTableView beginUpdates];
[reviewCell.postView setHidden:YES];
[self.reviewTableView endUpdates];
}
}
当用户按下按钮时,发件人单元格将“展开”(高度将延伸)并且将显示review.postView。但是,单元格只会展开,但直到我向下滚动并向上滚动才会显示postView。这可能是因为然后重新加载了单元格。如何在按下按钮后立即显示postView。
_isExpandList
只是一个数组,用于跟踪哪个单元格已展开,哪些单元格未展开。我在ViewDidLoad中使用以下代码启动了它:
_isExpandList = [[NSMutableArray alloc] init];
for (int i = 0; i < 5; i++) {
[_isExpandList addObject:@NO];
}
我将包含cellHeight函数以防万一,但我不认为它是相关的。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([[_isExpandList objectAtIndex:indexPath.row]isEqual:@0])
{
return 100;
}
else{
return 300;
}
}
答案 0 :(得分:1)
您需要使用以下命令显式重新加载tableview单元格:
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
或
- (void)reloadData
如果您不介意重新加载所有单元格的性能损失。