0

我需要将按钮的文本与变量进行比较。

@IBAction func CheckifATrue(sender: AnyObject) {
    if let thisbutton = sender.titleLabel.text {
        if thisbutton == theAnswer.text {
            score++
            println("Correct")}
    }
}

给我一个错误,迫使我把!在标题标签之后。我不能这样做,因为按钮 titleLabel 有可能(实际上 - 可以肯定)为零。为什么 if let 语句不让我打开包装?有没有另一种方法来拉按钮文本,我可以通过 if let 安全地删除可选内容,并且只有在有效时才执行代码?

4

3 回答 3

1

You need to change type of sender from AnyObject to UIButton after that you can unwrap it this way:

@IBAction func CheckifATrue(sender: UIButton) {

    if let thisbutton = sender.titleLabel?.text {
        if thisbutton == theAnswer.text {
            score++
            println("Correct")}
    }
}
于 2015-07-25T05:26:43.873 回答
0
 @IBAction func CheckifATrue(sender: AnyObject) {
    let sender = sender as! UIButton
    if let thisbutton = sender.titleLabel?.text {
      if thisbutton == theAnswer.text {
        score++
        println("Correct")}
    }
  }
于 2015-07-25T05:20:37.103 回答
0

感谢大家!实际上两者兼而有之。我需要将其更改为 UIButton,然后还将 thisbutton = 设置为 sender.titleLabel,然后才将 thisbutton.text 与 theAnswer.text 进行比较。发布解决方案以防其他人将来遇到此问题

@IBAction func checkifCTrue(sender: UIButton){
    if let thisbutton = sender.titleLabel {
    if thisbutton.text == secretAnsarrrrr.text {
    score++
    println("Correct")}
    }}
于 2015-07-25T07:07:18.520 回答