UiCollectionView在删除上一个单元格时跳到下一个单元格

问题描述 投票:0回答:1

我有全屏单元格的自定义布局。从左侧删除单元格(当时不可见)时,UICollectionView跳至下一个单元格。就像当前单元格位于索引4一样,当左侧的单元格被删除时,下一个单元格现在具有索引4,并立即滚动到下一个单元格。分3个步骤进行描述(A是需要全屏显示的单元格,x将被删除,o其他单元格,large字母是全屏显示):

  1. ooooAoo
  2. oooxAoo
  3. oooaOo

但必须保留此oooAoo

ios swift uicollectionview uicollectionviewcell uicollectionviewlayout
1个回答
0
投票

这里是我的解决方案,如果它可以帮助任何人,没有找到如何原生获得所需偏移的方法,那么只需在reloadData()之后将contentOffset滚动到所需位置即可。

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为计算属性,返回可选的中间单元格。由于自定义布局逻辑,请检测哪个单元最大。
  • parentList是模型项,我可以通过它比较单元格来使生命更轻松。我之前检查过哪个列表已附加到该单元格reloadData()。
© www.soinside.com 2019 - 2024. All rights reserved.