2014-05-08 18 views
0

所以我有一個加載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; 
    } 
} 
+0

如果我沒有錯你想使可擴展的tableview。 –

回答

1

你需要使用明確的重新加載的tableview細胞:

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

- (void)reloadData

,如果你不介意重裝所有的性能損失細胞。

相關問題