swift - 来自单个 UIButton 的两个 "Different"按钮?

标签 swift 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 的功能选项和图像。

谢谢!

最佳答案

这里:

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
}

关于swift - 来自单个 UIButton 的两个 "Different"按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57540856/

相关文章:

ios - 在 cellForRowAtIndexPath 中将 UIButton 视为 UILabel

ios - 在 cellForRowAt 中无法使用 UITableView 但在 Swift 中可以使用 numberOfRowsInsection

ios - 实时麦克风输入到 iOS 上的快速输出

ios - webview 在 swift 3 中打开 native fb 应用程序?

ios - Swift 泛型参数和返回类型

ios - 通过单击另一个按钮更改按钮文本垂直对齐方式

嵌套数组上的 Swift 相等运算符

ios - 从 UITableViewCell 调用 UIButton 操作

ios - 在制作自定义 UIButton 时,以 NSException 类型的未捕获异常终止

iphone - 如何调整 UIButton 的大小以适合文本而不使其比屏幕宽?