2016-04-07 8 views
0

Nun, mein Problem ist, dass, wenn ich versuche, eine Score-Zeile zu zählen, wenn eine Person etwas schreibt, das nicht dasselbe ist wie "42" in einem Textfeld (das ist das gleiche wie der label.text) Sie werden mit 1 Minuspunkt bestraft. Wenn ich etwas geschrieben habe, das nicht "42" ist, gibt es mir 1 Minuspunkt, aber nur das erste Mal. Wenn ich es noch einmal tue, ändert sich die Punktzahl nicht, also bleibe ich bei -1.Punkte zählen mit swift

Wie kann ich es jedes Mal tun, wenn ich etwas schreibe, das nicht "42" ist, wird es mir einen -1 Punkt geben, auch wenn ich bereits einen -1 Punkt erreicht habe?

(Wie Sie sehen, ich die Label.text eingestellt haben das gleiche wie TextField.text sein, wenn Sie sich fragen)

import UIKit 

    class ViewController: UIViewController, UITextFieldDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 

     // MARK: PROBERTIES 
     @IBOutlet weak var label: UILabel! 

     @IBOutlet weak var textField: UITextField! 
     @IBOutlet weak var scoreLabel: UILabel! 

     @IBOutlet weak var photoImageView: UIImageView! 
     @IBOutlet weak var label2: UILabel! 
     @IBOutlet weak var label1: UILabel! 
     let imagePicker = UIImagePickerController() 

     override func viewDidLoad() { 
      super.viewDidLoad() 


      textField.delegate = self 
      imagePicker.delegate = self 

     } 


     func textFieldShouldReturn(textField: UITextField) -> Bool { 

      textField.resignFirstResponder() 

      return true 
     } 
     func textFieldDidEndEditing(textfield: UITextField) { 
      label.text = textField.text 
      var score = 0 


      if textField.text != "42" { 
       score -= 1 
      } 

      // MARK: if-statements 

      if label.text! == "42" { 
       label1.text = "You are correct" 
       self.view.backgroundColor = UIColor.greenColor() 
       score += 10 
      } 

      if label.text != "42" { 
       label1.text = "Damn, wrong" 
       self.view.backgroundColor = UIColor.redColor() 

      } 

      if label.text!.isEmpty { 
       label1.text = "Still waiting for an answer..." 

      } 

      if label.text == "happiness" { 
       label1.text = "It is not a key element in the meaning of life" 

      } 

      if label.text == "to be happy" { 
       label1.text = "i would rather be rich" 

      } 

      if label.text == "money" { 
       label1.text = "there is more in this world than money" 

      } 

      if label.text == "There is no meaning of life" { 
       label1.text = "There is a meaning to everything" 

      } 

      if label.text == "there is no meaning of life" 
      { 
       label1.text = "there is a meaning to everything" 

      } 

      if label.text == "to be rich" { 
       label1.text = "Money does not solve every problem" 


      } 

      var scoreString = String(score) 
      scoreLabel.text = "Your score is \(scoreString)" 


     } 
+0

Hi was genau meinst du mit "Wie kann ich das jedes Mal machen, wenn ich etwas schreibe, das nicht" 42 "ist, wird es mir einen -1 Punkt geben, auch wenn ich bereits eine -1 erreiche?", Wie zum Beispiel Sie haben 100 Punkte, tippen nicht 42 gibt Ihnen 99 Punkte und wenn Sie nicht wieder 42 eingeben, dann wird es bei 99 bleiben? Oder 98? – StealthOne

+0

Was ich meine ist, dass ich nur die "-1" (wenn ich etwas schreibe, was nicht "42" ist) und "+10" (wenn ich "42" schreibe) nur einmal auslösen kann. Zum Beispiel fange ich mit der Punktzahl 0 an und schreibe etwas, was nicht 42 ist. Dann beende ich die Textfeldbearbeitung und mein scoreLabel ändert sich zu "Your score -1", aber wenn ich wieder mit der Bearbeitung beginne und etwas schreibe, das nicht gleich 42 ist "dann wird mein scoreLabel immer noch genauso aussehen" Your score -1 " –

Antwort

0

eine Verbindung von Ihrem Viewcontroller-Objekt der Bearbeitung des Textfelds Geänderte Ausgang hinzufügen . Welche Methode Sie auch immer verwenden, wird aufgerufen, wenn sich der Feldtext ändert.

+0

kannst du mir die codes zeigen? also kann ich 100% sicher sein –