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];
訣竅。