为什么在向下滚动iOS(tableView中的collectionview)时取消选择单元格?

为什么在向下滚动iOS(tableView中的collectionview)时取消选择单元格?,ios,swift,uitableview,uicollectionview,Ios,Swift,Uitableview,Uicollectionview,我有一个collectionview,在tableviewcell中有mulitselect。当我向下滚动时,选定的单元格被取消选择。 CollectionViewDelegate和数据源包含在单元格中。TableView仅包含此单元格。我认为,当TableView尝试重用单元格时会出现这个问题 class CategoryCollectionCell: UITableViewCell { @IBOutlet weak var collectionView: UICollect

我有一个collectionview,在tableviewcell中有mulitselect。当我向下滚动时,选定的单元格被取消选择。 CollectionViewDelegate和数据源包含在单元格中。TableView仅包含此单元格。我认为,当TableView尝试重用单元格时会出现这个问题

class CategoryCollectionCell: UITableViewCell {
    
    @IBOutlet weak var collectionView: UICollectionView!
    static let identefier = "CategoryCollectionCell"

    private var items: [Value] = [] {
        didSet {
            collectionView.reloadData()
        }
    }

    override func awakeFromNib() {
        super.awakeFromNib()
        commonInit()
    }
    
   
    private func commonInit() {
        collectionView.delegate = self
        collectionView.dataSource = self
        collectionView.allowsMultipleSelection = true
    }
    
    func config(items: [Value]) {
        self.items = items
    }
    
   
}

extension CategoryCollectionCell: UICollectionViewDataSource {
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        items.count
    }
    
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: CategoryCell.identefier, for: indexPath) as! CategoryCell
        cell.config(text: items[indexPath.row].name)
        cell.layoutIfNeeded()
        return cell
    }
}

func collectionView(collectionView:UICollectionView,cellForItemAt indexPath:indexPath)->UICollectionViewCell
中,如果先前已选中单元格,则必须将其设置为选中

iOS会在重新使用之前重置每个单元格。如果显示前的每个单元格都应选中或不选中,则必须签入数据

您可以在自定义UICollectionViewCell类中设置自定义方法,也可以使用内置的

cell.isSelected = true