UiCollectionView перейти на следующую ячейку, когда предыдущая ячейка удалена - PullRequest
0 голосов
/ 04 марта 2020

У меня есть пользовательский макет с полноэкранными ячейками. При удалении ячейки слева (она не видна в то время), UICollectionView переходит к следующей ячейке. Это похоже на текущую ячейку с индексом 4, и когда ячейка слева будет удалена, следующая ячейка будет иметь индекс 4 и сразу же перейдет к следующей ячейке. Описание в 3 этапа ( A - это ячейка, которая должна быть полноэкранной, x будет удалено, o другие ячейки, большая буква полный экран):

  1. ooooAoo
  2. oooxAoo
  3. oooaOo

Но нужно сохранить это oooAoo

1 Ответ

0 голосов
/ 06 марта 2020

Вот мое решение, если оно может кому-нибудь помочь, не нашел, как добиться желаемого смещения изначально, поэтому просто прокручивал contentOffset до нужной позиции сразу после reloadData ():

var currentCell: MyCollectionViewCell? {  
     return (visibleCells.sorted { $0.frame.width > $1.frame.width }.first) as? MyCollectionViewCell  
}  

//-----------------------------------------  

//some model manipulating code, removing desired items here...  

let currentList = currentCell?.parentList  
reloadData()  
if let list = currentList, let index = self.lists.firstIndex(of: list) {  
     self.scrollToItem(at: IndexPath(row: index, section: 0), at: .centeredHorizontally, animated: false)  
} 
  • currentCell является вычисляемым свойством, возвращает необязательную среднюю ячейку. Определите, какая ячейка является самой большой, благодаря пользовательской логике потока c.
  • parentList - элемент модели, я могу сравнить ячейку по ней, чтобы упростить жизнь. Я проверяю, какой список был прикреплен к ячейке перед reloadData ().
...