我已经在集合单元中以编程方式创建了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做到这一点,但是也许你们可能有一个以编程方式解决问题的解决方案。
答案 0 :(得分:0)
正如rmaddy所建议的那样,创建一个自定义单元类可以解决它。
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! FlagCell
并移动该类中添加的所有子视图。