2012-05-22 56 views
0

我正在編寫一個帶有UITableView作爲主用戶界面的iPhone應用程序。每個部分由兩行組成,一個標題和正文。更改UITableViewCell中的圖像,而無需重新加載單元格

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    cbwComponent *comp = [_componentController objectInListAtIndex:section]; 
    if([comp hasContentsView] && !comp.contentsHidden){ 
     return 2; 
    }else 
     return 1; 
} 

當用戶選擇的頭,我用下面的代碼:當用戶點擊表頭,我通過改變numberOfRowsInSection值刪除第二行

comp.contentsHidden = YES; 
[self.tableView beginUpdates]; 
NSArray *deleteIndexPaths = [[NSArray alloc] initWithObjects:[NSIndexPath indexPathForRow:1 inSection:indexPath.section], nil]; 
[self.tableView deleteRowsAtIndexPaths:deleteIndexPaths withRowAnimation:UITableViewRowAnimationFade]; 
[self.tableView endUpdates]; 

它的工作很好,具有很好的平滑淡化效果。問題是,我試圖在標題單元格(行0)中添加一個指示符,該指示符單擊時會發生變化。要改變這個圖像,我必須刷新第一行以及第二行,這會使轉換看起來很糟糕(好,幾乎不那麼光滑)。有沒有辦法更改UITableViewCell中的圖像而不刷新單元格?

謝謝

編輯:我想通了!只要您重新加載第一行,然後再對第二行進行更改,就可以保持平穩過渡。它必須在[tableView beginUpdates]中調用;

[self.tableView beginUpdates]; 
[self.tableView reloadRowsAtIndexPaths:[[NSArray alloc] initWithObjects:[NSIndexPath indexPathForRow:0 inSection:indexPath.section], nil] withRowAnimation:UITableViewRowAnimationNone]; 
... 
[self.tableView endUpdates]; 

訣竅。

回答

1

你也可以創建一個tableview單元格,並在其中實現一個可以從視圖控制器調用的視圖過渡。然後你可以調用它而不必重新加載單元格。

[(YourCustomCell*)[tableView cellForRowAtIndexPath:indexPathOfYourCell] fadeInIndicator]; 
相關問題