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

Ios UiCollectionView在删除上一个单元格时跳转到下一个单元格,ios,swift,uicollectionview,uicollectionviewcell,uicollectionviewlayout,Ios,Swift,Uicollectionview,Uicollectionviewcell,Uicollectionviewlayout,我有全屏单元格的自定义布局。从左侧移除单元格时(此时不可见),UICollectionView将跳到下一个单元格。 就像当前单元格位于索引4,当左侧的单元格被删除时,下一个单元格现在具有索引4,并立即滚动到下一个单元格。 分3步描述(A是需要全屏显示的单元格,x将被删除,o其他单元格,大的字母为全屏显示): 呜呜呜 oooxAoo 呜呜 但必须保留此oooAoo如果我的解决方案对任何人都有帮助,但我没有找到如何在本机上实现所需的偏移量,因此只需在重新加载数据()后将contentOffset滚动

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

  • 呜呜呜
  • oooxAoo
  • 呜呜

  • 但必须保留此oooAoo

    如果我的解决方案对任何人都有帮助,但我没有找到如何在本机上实现所需的偏移量,因此只需在重新加载数据()后将contentOffset滚动到所需的位置即可:

    • currentCell是computed属性,返回可选的中间单元格。 根据自定义的flowlayout逻辑,检测哪个单元格最大
    • parentList是一个模型项,我可以通过它来比较单元格以获得生命 更容易的。我检查之前哪个列表被附加到了牢房 重新加载数据()
    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)  
    }