我正在编写一个以UITableView作为主要用户界面的iPhone应用程序。每个部分由两行组成,一个标题和正文。当用户单击标题时,我通过更改numberOfRowsInSection值删除第二行:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
cbwComponent *comp = [_componentController objectInListAtIndex:section];
if([comp hasContentsView] && !comp.contentsHidden){
return 2;
}else
return 1;
}
当用户选择标题时,我使用以下代码:
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];
诀窍。
答案 0 :(得分:1)
您还可以子类化tableview单元格并在其中实现可以从视图控制器调用的视图转换。然后你可以调用它而无需重新加载单元格。
[(YourCustomCell*)[tableView cellForRowAtIndexPath:indexPathOfYourCell] fadeInIndicator];