ios - Swift:UIButton textLabel.text 值在 switch 语句中不可用

标签 ios uibutton switch-statement swift

我是 Swift 和 iOS 开发的新手,所以我正在尝试构建一个用于学习目的的计算器应用程序。但是,我遇到了一个错误。我用它们代表的数字为我的所有按钮命名,所以我通过 sender.titleLabel.text 在 buttonPress IBAction 中检索标题。然后,我将其传递到 switch 语句以确定按钮是数字还是运算符。

func handleButton (sender:UIButton) {
switch sender.titleLabel.text {
case "1","2","3","4","5","6","7","8","9","0" :
    println(sender.titleLabel.text)
default:
    break
    }     
}

错误是 sender.titleLabel.text 不会绑定(bind)到我输入的字符串值 - 也不会绑定(bind)到任何字符串值 - 即使它是字符串类型。

最佳答案

目前编译器中似乎存在一个错误,即隐式解包选项不能在 switch 语句中使用。相反,您可以使用可选绑定(bind)来满足编译器的要求。作为一个额外的好处,这将处理 titleLabel.text 为 nil 的情况。

func handleButton (sender:UIButton) {
    if let text = sender.titleLabel.text {
        switch text {
            case "1","2","3","4","5","6","7","8","9","0" :
                println(sender.titleLabel.text)
            default:
                break
        }
    }
    else {
        // sender.titleLabel.text is nil
    }
}

关于ios - Swift:UIButton textLabel.text 值在 switch 语句中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24269905/

相关文章:

ios - 如何在不下载外部 URL 的情况下测试文件是否存在?

ios - 映射解析对象在 callFunctionInBackground 中不起作用

iphone - iOS - 界面生成器 : UIButton title disappears when setting image

c - C 中的 switch 语句会清空 x86 管道吗?

javascript - 为什么 switch 和 if 语句在 Javascript 中对待 boolean 不同,困惑

objective-c - 为什么我得到这个 : _cfurl: unrecognized selector

ios - 拟合一条线 - MatLab 不同意 OpenCV

ios - UIButton 以相等的宽度快速延伸超过 UIView 的边缘

ios - 在 UITableViewController (Swift) 顶部添加按钮

javascript - 如何在 JavaScript 中使用 switch