【问题标题】:Switching function of UIButtonUIButton的切换功能
【发布时间】:2017-03-18 22:55:24
【问题描述】:

我有一个UIButton,我想在按钮的功能之间进行大小写切换。第一种情况是打印hello,第二种情况是打印yes。它会重新启动并一遍又一遍地继续。我试过了,但我一直失败。我在下面尝试了这个,但我不断收到“'Int'类型的表达式模式在案例0:和案例1:时无法匹配'Bool'类型的值:。我试图在每次按下按钮时切换按钮的功能

func Target(sender: UIButton){

switch (true){

case 0:
    print("hello")
case 1:
    print("yes")

default:
    println("hello")
}

}

【问题讨论】:

  • 如果您发布已尝试解决问题的代码,您将更有可能获得有用的回复。
  • 编辑您的问题以包含您的代码和更清晰的问题解释。然后有人可能会帮助你。或者,使用断点和调试器单步执行代码以查找逻辑错误。另外,请阅读有关如何提问的常见问题解答:stackoverflow.com/help/how-to-ask
  • 它现在已经编辑,你可以看看

标签: ios iphone swift xcode swift3


【解决方案1】:

虽然在许多语言中,您可以将整数值 01 用于布尔值 truefalse,但 Swift 是强类型的,因此 Int 不是 Bool。这就是 Swift 编译器告诉你的。

此外,您还有一个逻辑错误。您正在打开值true。这是一个常数,所以它永远不会是任何其他值; switch 函数无关紧要。

您要做的是打开其他一些状态变量的值,您可以在其中跟踪是否应该打印“hello”或“yes”

var buttonState = false

func target(_ sender: UIButton) {
    switch self.buttonState {
        case false:
            print("hello")
        case true:
            print("yes")
    }
    self.buttonState = !self.buttonState // Invert the button state variable
}

还要注意,按照惯例,只有类和结构名称应该以大写字母开头。属性和函数应以小写字母开头。坚持这个约定将帮助其他人(和你)阅读你的代码并理解什么是什么。

【讨论】:

    【解决方案2】:

    您无需在项目中使用任何额外的布尔值即可执行相同操作。只需使用按钮选择/未选择状态。

    func target(_ sender: UIButton) {
            if sender.isSelected{
                sender.isSelected = false
            }
            else{
                sender.isSelected = true
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2011-05-11
      • 1970-01-01
      • 2017-09-05
      • 2017-11-12
      • 1970-01-01
      • 2020-12-09
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多