我想在UIScrollView中切换七个按钮
当我点击一个按钮(标签= 1)时,它会突出显示。
然后我点击另一个按钮(tag = 2),它会突出显示并取消突出显示按钮(标记= 1)
如何控制它们?
感谢。
for i in 1...7 {
customButton = customButton(frame: CGRect(x: 0, y: 0, width: 100, height: 60))
customButton?.tag = i
customButton?.center = CGPoint(x: (-50)+(CGFloat(i)*100), y: 30)
customButton?.addTarget(self, action: #selector(buttonClick(sender:)), for: .touchUpInside)
scrollView.addSubview(customButton!)
}
@objc func buttonClick(sender: UIButton) {
//how to highlight clicked button and unhighlight other buttons
switch sender.tag {
case 1:
break
case 2:
break
case 3:
break
case 4:
break
case 5:
break
case 6:
break
case 7:
break
default:
break
}
答案 0 :(得分:1)
这个for循环将遍历scrollView的所有子视图。它通过比较isHighlighted
对象来更改sender
属性。
@objc func buttonClick(sender: UIButton) {
for case let button as UIButton in scrollView.subviews
{
button.isHighlighted = sender == button
}
}
答案 1 :(得分:0)
为所有按钮设置相同的操作
class MyViewController: UIViewController {
// collection of uibutton
@IBOutlet var barItems: [UIButton]!
var selectedItem: Int? { // setting nil will deselect all item
set {
barItems.forEach { (button) in
let isSelected = button.tag == newValue
button.isSelected = isSelected
}
}
get {
return barItems.first(where: {$0.isSelected})?.tag
}
}
// Same action for all button
@IBAction func onItemClick(_ sender: UIButton) {
selectedItem = sender.tag
}
}