Я хочу удалить ячейки в UICollectionView, которые имеют определенный идентификатор. Таким образом, ячейка может быть в середине представления.
Для этого я удаляю элемент из массива ячеек, а также удаляю indexPath. IndexPath должен быть получен первым. Это невозможно!
Каким-то образом невидимые / скрытые ячейки (под текущим представлением необходимо прокрутить вверх) нельзя удалить, поскольку они оказываются равными NIL.
Как получить доступ к определенной ячейке (с идентификатором) и удалить ее?
let cellIdToFeedItem_ToDelete = [ String : FeedItem ]() // here are the item to be deleted
var indexPathsToRemove = [ IndexPath ]()
var indexPathsAllActive = [ IndexPath ]() // Will be filled below
// --- retrieving all indexPaths
if let nrSections = self.collectionView?.numberOfSections
{
for s in 0..<nrSections
{
if let v = self.collectionView?.numberOfItems( inSection: s )
{
for i in 0..<v
{
let indexPathTMP = IndexPath( item: i, section: s )
indexPathsAllActive.append( indexPathTMP )
}
}
}
}
// --- delete the items with the same
for indexPath in indexPathsAllActive
{
// #### FOR HIDDEN CELLS THIS IS 'NIL'
let cell = self.collectionView?.cellForItem( at: indexPath ) as? FeedCollectionViewCell
if let cellID = cell?.id
{
if let _ = cellIdToFeedItem_ToDelete[ cellID ]
{
if let index = feedItemsActive_.firstIndex( where: {
(i) -> Bool in
i.id == cellID
} )
{
feedItemsActive_.remove( at: index )
indexPathsToRemove.append( indexPath )
}
}
}
}
self.collectionView?.deleteItems( at: indexPathsToRemove )