2016-06-12 16 views
-1

Ich vergleiche zwei Zahlen und der Zähler steigt um 1 wenn zwei Zahlen nicht gleich sind. Die Etiketten werden jedoch nicht aktualisiert und der Startknopf wird ausgegraut. Die Schaltfläche ist ausgegraut, bis diese beiden Zahlen gleich sind.Swift Button ausgegraut

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)" 
    } 
} 

Bitte helfen! Danke.

+0

Haben Sie versucht Attribut der Schaltfläche aktiviert? Beispiel: myButton.enabled = false macht es deaktiviert. – Array

+0

@Array Ja, aber das Problem ist, dass das Programm nicht aktualisiert, während es zwei Werte vergleicht. Es aktualisiert nur das letzte Ergebnis. – Asada

Antwort

0

Sie UICountingLabel anstelle von UILabel können

+0

Hallo, ich habe checkNums() aktualisiert. Ich habe es geändert, bevor ich hier geschrieben habe. – Asada

+0

let Temp: UInt32 = 100000 num1 = Int (arc4random_uniform (temp)) num2 = Int (arc4random_uniform (temp)) Diese Codezeilen in viewDidLoad sein sollte() –

+0

Wie jedes Mal wird es eine neue Zufallszahl erzeugen . Und ich denke, dein Ziel besteht darin, nur zwei zufällige Zahlen zu nehmen und den Zähler zu erhöhen, bis diese beiden gleich sind. –

0

Ich kann nirgendwo sehen, wo Sie die Werte von num1 und num2 aktualisieren. Nicht sicher, was genau Sie erreichen möchten, aber ich würde vermuten, dass Sie neue Werte für die beiden Zahlen in Ihrer Update-Funktion setzen sollten?

+0

Ich bekomme zwei Zufallszahlen und vergleiche dann aber die neuen Werte bevor ich sie hier geschrieben habe. Ich dachte, das wäre klarer. Es tut mir leid für die Verwirrung. – Asada

+0

So oder so, Ihre Werte müssen innerhalb der Update-Funktion geändert werden oder Ihre App wird für immer dort stecken bleiben. – Westside

+0

Ich korrigiere sie einfach, aber ich habe immer noch das Problem. Es aktualisiert das Etikett für das einzige letzte Ergebnis. – Asada