17

可能重复:
是否可以刷新 UITableView 中的单个 UITableViewCell?

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

[table reloadData];

它工作得很好,但是在效率方面,当我滚动时它有点悬,有没有办法只更新一个特定的单元格而不重新加载整个表?

谢谢。

4

6 回答 6

32
 - (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;

用这个

于 2013-02-05T07:20:24.307 回答
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];
于 2013-02-05T07:51:02.407 回答
2

您可以通过 -

UITableViewCell *cell = [table cellForRowAtIndexPath:indexPath];

现在根据数据数组中的对象更改其相关值。它应该反映在表格中。希望这可以帮助。

于 2013-02-05T07:36:33.953 回答
2

您可以使用 index path 重新加载特定的图像行。

    [mainTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
                         withRowAnimation:UITableViewRowAnimationNone];
于 2013-02-05T08:31:43.607 回答
1

在进行 GUI 更新时,最好使用 reloadData 而不是使用任何其他方法。reloadData 是在您的情况下更新的最佳方式,UITableView因为它避免了不一致。您可以做的另一件事是,您可以在您的条件中添加一个条件,cellForRowAtIndexPath并让执行仅针对已修改的单元格进行。

于 2013-02-05T07:25:50.107 回答
0

如果您只是添加一个项目,并且希望将其添加到表格中,则可以手动将其插入到 UITableView 中,这是一个示例:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:_directions.count-1 inSection:0];
NSArray *indexPaths = [NSArray arrayWithObject:indexPath];
[self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:YES];
于 2013-02-05T07:21:04.030 回答