所以我有一個加載customTableCells的TableView。設置customTableCell中的視圖,以便在beginUpdate和endUpdate後顯示
- (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;
}
}
如果我沒有錯你想使可擴展的tableview。 –