2016-06-19 9 views
0

次に、正解のみが書かれている場合、次の質問ボタンのみを表示する方法は?私はスイフトを使用しています!以下は私のコードです。どんな助けでも大歓迎です!ありがとう!正しい答えが書かれているときは正しいか、間違った答えが書かれたときは正しくないかは、どのようにクイズショーのanswerlabelを作るのですか?

これは私のコードで、 輸入のUIKit

class InputViewController1: UIViewController, UITextFieldDelegate { 

@IBOutlet var questionLabel: UILabel! 

@IBOutlet var correctAnswerLabel: UILabel! 

@IBOutlet var inputTextField: UITextField! 

var enteredAnswer: String? 

var correctAnswer = "Correct Answer = Small" 

override func viewDidLoad() { 
     super.viewDidLoad() 

    // Do any additional setup after loading the view. 
      NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(InputViewController1.keyboardWillShow(_:)), name: UIKeyboardWillShowNotification, object: nil) 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(InputViewController1.keyboardWillHide), name: UIKeyboardWillHideNotification, object: nil) 

    inputTextField.delegate = self 

    titlesForLabels() 
} 

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

func titlesForLabels() { 
    questionLabel.text = "What is the size of the lesion(s)?" 
    correctAnswerLabel.text = correctAnswer 
    correctAnswerLabel.hidden = true 

    inputTextField.text = nil 
    inputTextField.enabled = true 
} 

func keyboardWillShow(notification: NSNotification) { 
    let userInfo = notification.userInfo! 

    let keyboardFrame = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue() 

    UIView.animateWithDuration(0.1, animations: {() -> Void in 
     self.view.frame.origin.y = -keyboardFrame.size.height 
    }) 
} 

func keyboardWillHide() { 
    UIView.animateWithDuration(0.1, animations: {() -> Void in 
     self.view.frame.origin.y = 0 
    }) 
} 

func textFieldShouldReturn(textField: UITextField) -> Bool { 
    textField.resignFirstResponder() 

    enteredAnswer = textField.text 

    checkForCorrectAnswer() 

    return true 
} 

func checkForCorrectAnswer() { 
    if enteredAnswer!.lowercaseString == correctAnswer.lowercaseString { 
     print("Correct") 
     correctAnswerLabel.textColor = UIColor.greenColor() 
    } else { 
     print("Wrong Answer") 
     correctAnswerLabel.textColor = UIColor.redColor() 

    } 
    correctAnswerLabel.hidden = false 
} 

}

+0

「correctAnswer」を「Answer Answer = Small」に設定して、これを「textField」で入力した回答と比較したようです。ユーザーが「正解=小」と入力しない限り、テストは常に失敗します。ユーザーが「小」、「小」、「小」と入力するだけですか?もしそうなら、 'correctAnswer'を' Small 'に変更しました: 'var correctAnswer =" Small "。 – Ike10

+0

@ Ike10おっと、良いおかげで! – Babz

+0

ユーザーが正解(つまり小文字)を取得した場合にのみ、次の質問の次のボタンのようなボタンを表示したい場合は、そのコードを実装することがわかりますか?私はSwiftに新しいです – Babz

答えて

0

で質問をする前に、非常に慎重にこのコードを検討してください。 UIControlEvents.EditingChanged.EditingChanged)のaddTargetメソッドを使用すると、現在のinputTextFieldの現在の値でInputViewControllerのプロパティを変更できます。これはtextDidChange関数で行われます。また、nexButton.alphaは、0.0viewDidLoadに設定され、textDidChangecheckForCorrectAnswerの両方に応じて変更されています。

class InputViewController1: UIViewController, UITextFieldDelegate { 

    @IBOutlet weak var questionLabel: UILabel! 

    @IBOutlet weak var correctAnswerLabel: UILabel! 

    @IBOutlet weak var inputTextField: UITextField! 

    @IBOutlet weak var nextButton: UIButton! 

    @IBAction func nextButtonPressed(sender: UIButton) { 


    } 

    var enteredAnswer: String? 

    var correctAnswer = "Small" 

    override func viewDidLoad() { 
    super.viewDidLoad() 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(InputViewController1.keyboardWillShow(_:)), name: UIKeyboardWillShowNotification, object: nil) 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(InputViewController1.keyboardWillHide), name: UIKeyboardWillHideNotification, object: nil) 

    inputTextField.addTarget(self, action: #selector(InputViewController1.textDidChange(_:)), forControlEvents: .EditingChanged) 

    inputTextField.delegate = self 

    nextButton.alpha = 0.0 

    titlesForLabels() 
    } 

    func titlesForLabels() { 
    questionLabel.text = "What is the size of the lesion(s)?" 
    correctAnswerLabel.text = correctAnswer 
    correctAnswerLabel.hidden = true 

    inputTextField.text = nil 
    inputTextField.enabled = true 
    } 

    func keyboardWillShow(notification: NSNotification) { 
    let userInfo = notification.userInfo! 

    let keyboardFrame = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue() 

    UIView.animateWithDuration(0.1, animations: { 
     self.view.frame.origin.y = -keyboardFrame.size.height 
    }) 
    } 

    func keyboardWillHide() { 
    UIView.animateWithDuration(0.1, animations: { 
     self.view.frame.origin.y = 0 
    }) 
    } 

    func textFieldShouldReturn(textField: UITextField) -> Bool { 
    textField.resignFirstResponder() 

    enteredAnswer = textField.text 

    checkForCorrectAnswer() 

    return true 
    } 

    func checkForCorrectAnswer() { 
    if enteredAnswer!.lowercaseString == correctAnswer.lowercaseString { 
     correctAnswerLabel.textColor = UIColor.greenColor() 
     UIView.animateWithDuration(0.5, animations: { 
     self.nextButton.alpha = 1.0 
     }, completion: nil) 
     correctAnswerLabel.text = "Correct!" 
    } else { 
     print("Wrong Answer") 
     correctAnswerLabel.textColor = UIColor.redColor() 
     correctAnswerLabel.text = "Incorrect!" 
    } 
    correctAnswerLabel.hidden = false 
    } 

    func textDidChange(sender: UITextField) { 
    enteredAnswer = inputTextField.text 
    correctAnswerLabel.textColor = UIColor.redColor() 
    correctAnswerLabel.text = "Incorrect!" 
    if enteredAnswer!.lowercaseString != correctAnswer.lowercaseString { 
     UIView.animateWithDuration(0.5, animations: { 
     self.nextButton.alpha = 0.0 
     }, completion: nil) 
    } 
    } 

} 
+0

ねえ、あなたが提案したことをすると、タイプUIViewにメンバーがアニメートしていないという赤いエラーが表示されます – Babz

+0

あなたは迅速な2.3か3で作業していますか? @Babz – Ike10

+0

また、答えの代わりに答えのラベルに正しい単語と間違った単語を表示する方法はありますか?たとえば、答えが「小」でユーザーが「中」を入力した場合、answerlabelは「間違っています!正しい答えが書かれている場合(小)、次の質問にボタンが表示されます – Babz

関連する問題