【问题标题】:How to update a UITableVIewCell without reloading full table [duplicate]如何在不重新加载完整表的情况下更新 UITableVIewCell [重复]
【发布时间】:2013-01-20 01:23:51
【问题描述】:

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

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

[table reloadData];

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

谢谢。

【问题讨论】:

标签: iphone ios objective-c uitableview


【解决方案1】:
 - (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;

使用这个

【讨论】:

  • 它工作了,但在滚动更新时仍然冻结..
  • 你的单元格有图片吗?
  • 为他们使用延迟加载
  • @amar “延迟加载”基本上是指异步加载吗?
  • @Supertecnoboff 是的,它是一个技术俚语,这意味着加载是惰性的,并且是在加载单元格之后进行的。
【解决方案2】:

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

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:_directions.count-1 inSection:0];
NSArray *indexPaths = [NSArray arrayWithObject:indexPath];
[self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:YES];

【讨论】:

  • 我已经添加了该对象需要更新其值
  • 看我的回答然后@newbee
【解决方案3】:

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

【讨论】:

  • 这是错误的。有几种方法可以更新 UITableView 的一部分。 reloadRowsAtIndexPaths、reloadSections 和 reloadSectionsWithIndexTitles 都会重新加载 UITableView 的一部分。
  • @Fogmeister 我的句子不正确。我的意思是说Newbee试图使用它的条件。我已经编辑了我的答案。
【解决方案4】:

你可以通过 - 获取单元格对象

UITableViewCell *cell = [table cellForRowAtIndexPath:indexPath];

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

【讨论】:

  • 谢谢,伙计。这对我来说非常有用。
【解决方案5】:

你可以用这个..

NSArray *indexPathArray = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:1 inSection:0]];
//You can add one or more indexPath in this array...

[tblview reloadRowsAtIndexPaths:indexPathArray withRowAnimation:UITableViewRowAnimationFade];

【讨论】:

    【解决方案6】:

    您可以使用索引路径重新加载特定的图像行。

        [mainTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
                             withRowAnimation:UITableViewRowAnimationNone];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-23
      • 2015-07-04
      • 2011-11-02
      • 1970-01-01
      • 2014-01-10
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      相关资源
      最近更新 更多