【发布时间】:2020-04-13 20:28:03
【问题描述】:
我的应用正在侦听一个套接字事件,该事件告诉它何时更新了当前由屏幕上的collectionView 显示的数据。发生这种情况时,我想从数据源和collectionView 中删除与更新行对应的单元格。我可以这样做:
- 过滤数据以仅包含 id 与更新项目的 id 不同的项目
- 将此新数据设置为
collectionView使用的数据 -
重新加载
collectionViewsocket.on(DATA_UPDATE) { (data, ack) in if let dat = data[0] as? [String: Any] { if let tabId = dat["tabId"] as? Int, let resId = dat["resId"] as? Int { let remainingData = self.data?.filter{ $0.tabId != tabId } if resId == self.restaurant?.id && remainingData?.count != self.data?.count { self.data = remainingData self.filterTableDataAndRelaod() } } } }
问题在于它会更新整个collectionView 并且还会向上滚动到顶部。我想改用以下代码来做到这一点:
self.data.remove(at: indexPath.row)
collectionView.deleteItems(at: [indexPath])
但是,我不确定如何获取上述代码 sn-p 中的indexPath。
【问题讨论】:
标签: ios swift uicollectionview uicollectionviewcell indexpath