簡體   English   中英

如何跟蹤collectionView(由FetchedResultsController支持)單元

[英]How to track collectionView (backed by FetchedResultsController) cell

我有一個聊天collectionView。 用戶可以在其中發送新消息,刪除消息等。collectionView由fetchedResultController支持。

有多種類型的單元,例如文本,圖像,音頻等。我創建了一個播放器,用於處理單個單元的音頻。 該單元是播放器的代表,因此我可以從播放器對象中更新播放時間,停止播放器等。 我使用indexPath跟蹤當前的音頻播放單元。

但是問題是,如果用戶刪除在音頻消息之前接收或發送的消息,則音頻消息的indexPath會更改。

func controller(_ controller: NSFetchedResultsController<NSFetchRequestResult>,
                    didChange anObject: Any,
                    at indexPath: IndexPath?,
                    for type: NSFetchedResultsChangeType,
                    newIndexPath: IndexPath?) {
}

在此回叫中,我僅收到已刪除單元格的刪除。 但是我沒有收到其他單元格的已更新indexPath的任何回調。 如果刪除了上一個單元,如何跟蹤音頻單元的indexPath或單元?

我懷疑如果您填充到每個單元格中的數據的結構或類具有唯一的標識符,這樣就可以對每個對象進行操作,而不管其在屏幕上的位置如何,這可能會很好。 如果索引要四處移動並進行更改,則可能需要更永久的內容來跟蹤要對哪些對象進行操作。

希望這是有道理的。 如果“需要”對每個單元格的索引而不是其中的數據進行操作,則只要有任何移動,刪除或更改,就需要更新對索引的任何引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM