滚动时UISwitch在CollectionViewCells中复制/奇怪的覆盖

时间:2019-05-30 17:22:23

标签: ios swift uicollectionview uiswitch

我已经在集合单元中以编程方式创建了UISwitch,随着滚动的进行,这些开关被一遍又一遍地添加,这导致了一半的切换(猜测是因为另一个UISwitch就在其下方)。

这是创建UISwitch的整个步骤。

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "FlagCell", for: indexPath)

    let switchOnOff = UISwitch()

    switchOnOff.translatesAutoresizingMaskIntoConstraints = false
    switchOnOff.setOn(true, animated: true)

    cell.contentView.addSubview(switchOnOff)

    NSLayoutConstraint(item: switchOnOff, attribute: .trailing, relatedBy: .equal, toItem: cell, attribute: .trailing, multiplier: 1, constant: -10).isActive = true

    NSLayoutConstraint(item: switchOnOff, attribute: .centerY, relatedBy: .equal, toItem: cell, attribute: .centerY, multiplier: 1, constant: 0).isActive = true

    return cell
}

我能够通过Storyboard做到这一点,但是也许你们可能有一个以编程方式解决问题的解决方案。

1 个答案:

答案 0 :(得分:0)

正如rmaddy所建议的那样,创建一个自定义单元类可以解决它。

let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! FlagCell

并移动该类中添加的所有子视图。