如何控制多个按钮,只有一个按钮是由swift4高亮?

时间:2018-01-31 06:58:23

标签: ios swift uibutton

我想在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
}

2 个答案:

答案 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)

  1. 创建所有按钮的插座集合并提供标签
  2. 为所有按钮设置相同的操作

     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
         }
      }