每次出现视图时都会显示tableView.reloadData()

时间:2017-02-10 11:10:20

标签: ios objective-c swift uitableview uicollectionview

我正在使用Firebase在Instagram等社交应用上工作。用户在主屏幕和个人资料中共享照片的位置。我的问题是 user1 主屏幕中喜欢用户2 图片2 并访问 user2&# 39; s 配置文件 picture2 的相似值在重新加载单元格之前仍然相同。

如果我向下滚动并返回 picture2 ,则正在重新加载单元格并且它具有正确的值。因为我在我的单元格中使用didSet {},其中提取类似值。但那是一种糟糕的用户体验。所以我的解决方案是每次都重新加载collectionView。

这对性能有害吗?或者还有其他问题吗?

1 个答案:

答案 0 :(得分:2)

你可以这样做:

目标C

NSArray *visibleCells = [_tblWhoAreYou visibleCells];
for (WhoRUSWCell *cell in visibleCells) {
   NSIndexPath *indexPath = [_tblWhoAreYou indexPathForCell:cell];
   cell.imageStatus.image=[UIImage imageNamed:@"greenCircle.png"];
   [cell setNeedsLayout]; // OR you can reload particular cell
}

Swift 3.0

var visibleCells: [Any] = self.tblWhoAreYou.visibleCells
for cell: WhoRUSWCell in visibleCells {
    var indexPath: IndexPath? = self.tblWhoAreYou.indexPath(for: cell)
    cell.imageStatus.image = UIImage(named: "greenCircle.png")
    cell.setNeedsLayout() // OR you can reload particular cell
}

使用此功能,您可以直接更新图像而无需重新加载。您只需检查标记或其他任何内容,即可找到要更新的所选对象。