2016-06-12 82 views
-1

我比較兩個數字,如果兩個數字不相等,則計數器增加1。 但是,標籤不會更新,並且開始按鈕變灰。該按鈕變灰,直到這兩個數字相等。快速按鈕變灰

import UIKit 

enum modes { 
case start 
case cancel 
} 

class ViewController: UIViewController { 

    var mode: modes = modes.start 
    var num1: Int = 0 
    var num2: Int = 1 
    var count: Int = 0 
    @IBOutlet weak var start: UIBarButtonItem! 
    @IBOutlet weak var label: UILabel! 
    @IBOutlet weak var countLabel: UILabel! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    @IBAction func startClicked(sender: AnyObject) { 
     if (mode == modes.start) { 
      mode = modes.cancel 
      start.title = "cancel" 
      checkNums() 
     } else if (mode == modes.cancel) { 
      mode = modes.start 
      start.title = "start" 
      num1 = 0 
      num2 = 1 
     } 
    } 

func checkNums() { 
    while (num1 != num2) { 
     let temp: UInt32 = 100000 
     num1 = Int(arc4random_uniform(temp)) 
     num2 = Int(arc4random_uniform(temp)) 
     print("\(num1) and \(num2)") 
     update() 
    } 

    func update() { 
     count += 1 
     label.text = "\(num1) and \(num2)" 
     countLabel.text = "\(count)" 
    } 
} 

請幫忙! 謝謝。

+0

的使用UICountingLabel你試過啓動按鈕的屬性?例如:myButton.enabled = false將會禁用它。 – Array

+0

@Array是的,但問題是程序沒有更新,它比較了兩個值。它只更新最後的結果。 – Asada

回答

0

可以替代的UILabel

+0

嗨,我更新了checkNums()。在我寫這裏之前,我改變了它。 – Asada

+0

讓溫度:UInt32的= 100000 NUM1 = INT(arc4random_uniform(TEMP)) NUM2 = INT(arc4random_uniform(TEMP)) 這些代碼行應該在viewDidLoad中() –

+0

由於每一個它會產生一個新的隨機數的時間。我認爲你的目標只是取兩個隨機數並遞增計數器直到這兩個數相等。 –

0

我看不到任何地方你正在更新num1和num2的值。不知道你到底想要達到什麼目的,但我猜你應該在更新函數中爲這兩個數字設置新值。

+0

我得到兩個隨機數,然後進行比較,但在我寫這裏之前設置了新值。我認爲這會更清楚。我很抱歉的混淆。 – Asada

+0

無論採用哪種方式,您的值都需要在更新函數內部進行更改,否則您的應用程序將永久停留在那裏。 – Westside

+0

我只是糾正他們,但我仍然有問題。它更新了唯一最後結果的標籤。 – Asada