首页 > 解决方案 > 来自单个 UIButton 的两个“不同”按钮?

问题描述

我有一组基本的按钮,我想根据用户是否按下“shift”类型的单独按钮来更改功能和外观。

@IBOutlet var shiftBtn: UIButton!
@IBAction func shiftBtn(_ sender: UIButton) {
      changeLookOfsomeBtns() /* ?? */
    }

@IBOutlet var someBtns: [UIButton]!
@IBAction func someBtns(_ sender: UIButton) {
      if shiftBtn.selected == true {
          doSomething()
      } else if shiftBtn.selected == false {
          doSomethingElse()

}

这是正确的方法吗?我一直坚持应用什么技术来更改 someBtns 的功能选项和图像。

谢谢!

标签: swiftuibutton

解决方案


这里:

if shiftBtn.selected == true {
    doSomething()
} else if shiftBtn.selected == false {
    doSomethingElse()
}

您似乎正在检查按钮上的(不存在的)属性来决定要做什么。一般来说,您不应该根据按钮的属性做出决定。相反,您应该有一个单独的属性(我们称之为它shifted)来指示 shift 按钮是否被激活。

var shifted = false {
    didSet {
        if shifted {
            changeSomeButtonsToShiftedAppearance()
        } else {
            changeSomeButtonsToNormalAppearance()
        }
    }
}

@IBAction func someBtns(_ sender: UIButton) {
      if shifted {
          doSomething()
      } else {
          doSomethingElse()
}

并在按下 shift 时设置此属性:

@IBAction func shiftBtn(_ sender: UIButton) {
    shifted = !shifted
}

推荐阅读