如何在不重新加载完整表的情况下更新UITableVIewCell

时间:2013-02-05 07:18:32

标签: iphone ios objective-c uitableview

  

可能重复:
  Is it possible to refresh a single UITableViewCell in a UITableView?

在序列中,我只更新列表数据中的特定对象(NSMUtableArray),一旦更新了它的值,为了进行GUI更新,我重新加载了如下所示的完整表...

[table reloadData];

它运行正常,但是在效率方面,我在滚动时有点悬挂,有没有办法只更新一个特定的单元而不重新加载全表?

感谢。

6 个答案:

答案 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];