Мое приложение прослушивает событие сокета, которое сообщает ему, когда произошло обновление данных, которые в данный момент отображаются на экране collectionView
. Когда это происходит, я бы хотел удалить ячейку, соответствующую обновленной строке, из источника данных и из collectionView
. Я могу сделать это следующим образом:
- отфильтровать данные, чтобы они содержали только элементы с идентификатором, отличным от идентификатора обновленного элемента
- установить эти новые данные в качестве данных, используемых
collectionView
перезагрузите collectionView
socket.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])
Однако я не уверен, как получить indexPath
в приведенном выше фрагменте кода.