Swift-每次点击按钮时如何刷新按钮?

时间:2014-12-29 02:41:14

标签: button if-statement swift label

在swift中按下UIButton时,我似乎无法弄清楚如何重复功能块。这就是我所拥有的:

class CoinFlip: UIViewController {
@IBOutlet var resultLabel: UILabel!
    var randomNumber = (Int(arc4random_uniform(2)))
    @IBAction func tossButton(sender: UIButton) {
        if randomNumber == 0 {
        resultLabel.text = "Heads!"
        }
        else if randomNumber == 1 {
        resultLabel.text = "Tails!"
        }
    }
}

在应用程序中按下按钮时,它会选择一个随机数。如果我再次点击它,它会显示相同的数字。每次按下按钮时我能做什么才能刷新?

2 个答案:

答案 0 :(得分:1)

    var randomNumber = 0

    @IBAction func tossButton(sender: UIButton) {
        randomNumber  = Int(arc4random_uniform(2))
        if randomNumber == 0 {
            resultLabel.text = "Heads!"
        } else {
            resultLabel.text = "Tails!"
        }
    }

您还可以创建一个只读的计算属性,如下所示:

  

只读计算属性

     

具有getter但没有setter的计算属性称为a   只读计算属性。始终是只读计算属性   返回一个值,可以通过点语法访问,但不能   设置为不同的值。

     

请注意

     

您必须声明计算属性 - 包括只读计算   properties - 作为var关键字的变量属性,因为它们的   价值不固定。 let关键字仅用于常量   属性,表示一旦它们的值无法更改   被设置为实例初始化的一部分。

     

您可以通过简化只读计算属性的声明   删除get关键字及其大括号:

    var headsTails:Bool {
        return Int(arc4random_uniform(2)) == 1 ? true : false
    }

    if headsTails  {
        println("Heads")
    } else {
        println("Tails")
    }

    println(headsTails)
    println(headsTails)
    println(headsTails)
    println(headsTails)
    println(headsTails)
    println(headsTails)
    println(headsTails)
    println(headsTails)
    println(headsTails)
    println(headsTails)

答案 1 :(得分:0)

快速编码,希望有所帮助:

class CoinFlip: UIViewController {

    var randomNumber: Int?

    @IBOutlet var resultLabel: UILabel!

    @IBAction func tossButton(sender: UIButton) {
        guard (randomNumber != nil) else {
            randomNumber = Int(arc4random_uniform(2)) // picks a number
            resultLabel.text = ""                     // removes the old result
            return
        }

        // Displays the number
        resultLabel.text = randomNumber == 0 ? "Heads!" : "Tails!"
        randomNumber = nil
    }
}