Я пытаюсь создать несколько UIS-переключателей, но я пытаюсь включить только определенные переключатели. Я хочу включить только те переключатели, которые находятся в обоих массивах (weightUnits и allUnits). Кто-нибудь, кто знает, как я могу это сделать?
let weightUnits = [ UnitMass.kilograms, UnitMass.stones, UnitMass.pounds, UnitMass.ounces ]
@objc func weightLong(_ sender: UIGestureRecognizer){
if sender.state == .began{
createOptionView(weightUnits)
}
}
fileprivate func createOptionView(_ units: [UnitMass]) {
for view in infoStack.subviews {
//cleans the infoStack to make it ready for the new units.
view.removeFromSuperview()
}
let allUnits = [ UnitMass.grams, UnitMass.kilograms, UnitMass.metricTons, UnitMass.stones, UnitMass.pounds, UnitMass.ounces ]
for unit in allUnits {
let prefix = unit
let newOptionCard = UIStackView()
newOptionCard.axis = .horizontal
newOptionCard.alignment = .trailing
newOptionCard.distribution = .fill
let option = UISwitch()
for usersUnit in units {
if allUnits.contains(usersUnit){
option.setOn(true, animated: false)
}
}
newOptionCard.addArrangedSubview(option)
let label = UILabel(frame: CGRect.zero)
label.text = " " + prefix.symbol
label.textColor = .white
label.font = UIFont(name: "American Typewriter", size: 20)
label.addConstraint(NSLayoutConstraint(item: label, attribute: NSLayoutConstraint.Attribute.width, relatedBy: NSLayoutConstraint.Relation.equal, toItem: nil, attribute: NSLayoutConstraint.Attribute.notAnAttribute, multiplier: 1, constant: 60))
newOptionCard.addArrangedSubview(label)
infoStack.addArrangedSubview(newOptionCard)
}
}