2014-09-12 180 views
0

我正在通過使用下面的擴展tableViewCell。但問題是我能夠一次擴展多個單元格。我想要做的是,如果一個單元格被展開,其他單元格被點擊,前一個單元格應該一次展開一個單元格。TableView單元格擴展不會發生在單個單元格

這是我如何擴大。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 


if ([self.expandedCells containsObject:indexPath]) { 


    [self.expandedCells removeObject:indexPath]; 



}else{ 
    isExpanded=YES; 
    [self.expandedCells addObject:indexPath]; 
    //Populate expanded cell here 

} 

[self.tableView beginUpdates]; 
[self.tableView reloadData]; 
[self.tableView endUpdates]; 


} 

回答

-1

我假設self.expandedCells有要展開的單元格數組。如果是這種情況,在didSelctRow中,從expandedCells數組中刪除所有對象,然後添加選定的單元格。並執行重新加載。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 


    [self.expandedCells removeAllObjects]; 
    isExpanded=YES; 
    [self.expandedCells addObject:indexPath]; 



    [self.tableView beginUpdates]; 
    [self.tableView reloadData]; 
    [self.tableView endUpdates]; 


} 
+0

我仍然可以展開多個單元格。但是當我再次單擊任何展開的單元格時,所有單元格都將被刪除。 – iSD 2014-09-12 12:46:53

+0

如果我移動'isExpanded = YES; [self.expandedCells addObject:indexPath];'如果'裏面的'單元格不適合擴展。 – iSD 2014-09-12 13:00:31

0

明白了。只是在添加任何東西之前檢查數組數。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 


    if ([self.expandedCells containsObject:indexPath]) { 


    [self.expandedCells removeObject:indexPath]; 



    }else{ 
    isExpanded=YES; 
    if (self.expandedCells.count>0) { 
    [self.expandedCells removeAllObjects]; 
    } 


    [self.expandedCells addObject:indexPath]; 
    //Populate expanded cell here 

} 

[self.tableView beginUpdates]; 
[self.tableView reloadData]; 
[self.tableView endUpdates]; 


}