2017-08-29 1 views
-2

Entwickeln einer Einzelansicht-App für iOS mit Swift 3-Syntax, damit eine UIButton eine Funktion mit dem Namen CheckAnswer() aufrufen kann, die den String-Wert angibt in einem UITextField ist gleich einem bestimmten Wert.Ich erhalte den Fehler "nicht aufgelöster Bezeichner" beim Versuch, über eine andere Methode auf eine Variable zuzugreifen

Ich halte einen Fehler (ungelöste Identifier) ​​empfängt, wenn meine CheckAnswer() Funktion eine Bedingung auszuführen beginnt für meine UITextField Variable den String-Wert zu argumentieren Answer genannt. Ich bin mir nicht sicher, wie man diesen Fehler debuggt. :) Danke für Anregungen!

override func viewDidLoad() { 
    super.viewDidLoad() 

    //INPUT BOX - User Input! 
    let Answer : UITextField = UITextField(frame: CGRect(x: 35, y: 150, width: 250, height:50)) 
    Answer.placeholder = "Enter Your Answer" 
    Answer.font = UIFont.init(name:"times", size: 24) 
    Answer.backgroundColor = UIColor(red:0xff ,green:0xff, blue:0x88 ,alpha:1) 
    self.view.addSubview(Answer) 

    //BUTTON - Check Answer! 
    let Button : UIButton = UIButton(frame: CGRect(x: 35, y: 200, width: 250, height:50)) 
    Button.setTitle("Submit Answer", for: .normal) 
    Button.titleLabel!.font = UIFont.init(name:"times", size: 24) 
    Button.backgroundColor = UIColor(red:0x00 ,green:0x00, blue:0x00 ,alpha:1) 
    Button.addTarget(self, action: #selector(CheckAnswer), for: .touchUpInside) 
    self.view.addSubview(Button) 
} 

func CheckAnswer(_ sender: UIButton){ 
    if Answer.text == "answer" || Answer.text == "Answer"  
    { print("Correct ! Response") } 
    else { print("Incorrect x Response") } 
    } 
+3

Eigenschaften und Methodennamen sollten mit Kleinbuchstaben in Swift beginnen. – Moritz

Antwort

2

Sie sollten answer eine Klassenvariable machen, so dass es außerhalb der viewDidLoad Funktion zur Verfügung stehen wird. (Die Art der es kann auch weggelassen werden, da der Compiler aus dem UITextField initializer erraten kann, dass es eine UITextField sein.)

let answer = UITextField(frame: CGRect(x: 35, y: 150, width: 250, height: 50)) 

override func viewDidLoad() { 
    super.viewDidLoad() 

    [...] 
} 

Auf einer anderen Anmerkung, Variablennamen in Swift sollte mit einem Kleinbuchstaben beginnen. Klassen-, Struct- und Enum-Namen beginnen mit einem Großbuchstaben, dies kann in der Zukunft zu Verwirrung führen.

+0

Vielen Dank! – ctaylorgraphics

Verwandte Themen