可能重复:
Is it possible to refresh a single UITableViewCell in a UITableView?
在序列中,我只更新列表数据中的特定对象(NSMUtableArray),一旦更新了它的值,为了进行GUI更新,我重新加载了如下所示的完整表...
[table reloadData];
它运行正常,但是在效率方面,我在滚动时有点悬挂,有没有办法只更新一个特定的单元而不重新加载全表?
感谢。
答案 0 :(得分:31)
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
使用此
答案 1 :(得分:9)
你可以使用它..
NSArray *indexPathArray = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:1 inSection:0]];
//You can add one or more indexPath in this array...
[tblview reloadRowsAtIndexPaths:indexPathArray withRowAnimation:UITableViewRowAnimationFade];
答案 2 :(得分:2)
您可以通过 -
获取单元格对象UITableViewCell *cell = [table cellForRowAtIndexPath:indexPath];
现在根据您的对象从数据数组中更改其相关值。它应该反映在表格中。 希望这会有所帮助。
答案 3 :(得分:2)
您可以使用索引路径重新加载特定图像行。
[mainTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationNone];
答案 4 :(得分:1)
在进行GUI更新时,最好使用reloadData,而不是使用任何其他方法。 reloadData是您更新UITableView
的最佳方式,因为它可以避免不一致。您可以做的另一件事是,您可以在cellForRowAtIndexPath
中添加条件,并且仅对已修改的单元格执行。
答案 5 :(得分:0)
如果您只是添加一个项目,并希望将其添加到表格中,您可以手动将其插入UITableView,这是一个示例:
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:_directions.count-1 inSection:0];
NSArray *indexPaths = [NSArray arrayWithObject:indexPath];
[self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:YES];