【问题标题】:How can I check the currentTitle of a UIButton in a switch?如何检查开关中 UIButton 的 currentTitle?
【发布时间】:2017-07-27 18:48:36
【问题描述】:

我有一个 UIButton 可以在不同情况下更改标题。 如果您按下按钮,则应通过 Swift Switch(并执行某些代码)检查 currentTitle。

以下内容不起作用:

@IBAction func button(_ sender: UIButton) {
    switch sender.currentTitle {
    case "":
        //Code
    case "OK":
        //Code
    default:
}
}

Xcode 只显示“预期模式”(第一个原因)和“预期表达式”(第二个案例)

【问题讨论】:

  • 其实这段代码不会导致Expected Expression错误。
  • 重要的是确保在每个casedefault 下都有某种可执行语句。 breakreturn 也可以工作

标签: swift uibutton switch-statement


【解决方案1】:

根据文档,UIButton.currentTitle 的类型为 String?。 (可选类型字符串)

您的switch 语句将可选类型与非可选类型进行比较,这就是您看到错误的原因。

建议在使用switch 检查它的值之前先解包该值,例如:

guard let title = sender.currentTitle() else { return }

switch title {
 ...
}

【讨论】:

    【解决方案2】:

    switch 语句中的每个 case 都必须有一行代码。如果您不想做任何事情,可以使用break

    @IBAction func button(_ sender: UIButton) {
        switch sender.currentTitle {
        case "":
            //Code
        case "OK":
            //Code
        default:
            break
        }
    }
    

    【讨论】:

    • 哦,对不起。有一个休息时间,但我在这里忘记了。
    • @C0d0r 如果您重建项目,错误会消失吗?有时,当 Xcode 感到困惑时,这些错误会一直存在。
    • 重建并不能解决任何问题
    【解决方案3】:

    我通过添加问号意外解决了问题

    @IBAction func button(_ sender: UIButton) {
    switch sender.currentTitle {
    case ""?:
        //Code
    case "OK"?:
        //Code
    default:
        break
    }
    }
    

    我不知道为什么,但它仍然有效,感谢您的帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-25
      • 2017-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-24
      • 2016-07-31
      • 1970-01-01
      相关资源
      最近更新 更多