2017-07-22 7 views
0

私はすべての要素がプログラムによって追加されたSwiftでアプリケーションを作っています。UIButtonのテキストが更新されないSWIFT

//This code is inside of viewDidLoad function 
makeButtonWithName(button: answer0B, title: "0", font: 
"HelveticaNeue", fontSize: resetHeight, frame: CGRect(x:width/2 - 
viewWidth/2, y: firstViewY, width: viewWidth, height: viewHeight), 
selector: #selector(self.answer0(_:))) 

makeButtonWithName(button: answer1B, title: "0", font: "HelveticaNeue", 
fontSize: resetHeight, frame: CGRect(x:width/2 - viewWidth/2, y: 
secondViewY, width: viewWidth, height: viewHeight), selector: 
#selector(self.answer1(_:))) 

makeButtonWithName(button: answer2B, title: "0", font: 
"HelveticaNeue", fontSize: resetHeight, frame: CGRect(x:width/2 - 
viewWidth/2, y: thirdViewY, width: viewWidth, height: viewHeight), 
selector: #selector(self.answer2(_:))) 

makeButtonWithName(button: answer3B, title: "0", font: 
"HelveticaNeue", fontSize: resetHeight, frame: CGRect(x:width/2 - 
viewWidth/2, y: fourthViewY, width: viewWidth, height: viewHeight), 
selector: #selector(self.answer3(_:))) 


firstNumber = Int(arc4random_uniform(9)) 
secondNumber = Int(arc4random_uniform(9)) 
incorrectAnswer1 = Int(arc4random_uniform(18)) 
incorrectAnswer2 = Int(arc4random_uniform(18)) 
incorrectAnswer3 = Int(arc4random_uniform(18)) 
timer.invalidate() 
seconds = 31 
runTimer() 
randomNumbers() 

//End viewDidLoad function 


func answer0(_ sender: UIButton!){ 
    let a:Int? = Int((answer0B.titleLabel?.text)!) 

    if a == answerNumber{ 
     correctIncorrectLabel.text = "Correct" 
     correctIncorrectLabel.textColor = UIColor.green 
     correctNumber += 1 
    } 
    else{ 
     correctIncorrectLabel.text = "Incorrect" 
     correctIncorrectLabel.textColor = UIColor.red 
    } 
    randomNumbers() 

} 

func answer1(_ sender: UIButton!){ 
    let b:Int? = Int((answer1B.titleLabel?.text)!) 

    if b == answerNumber{ 
     correctIncorrectLabel.text = "Correct" 
     correctIncorrectLabel.textColor = UIColor.green 
     correctNumber += 1 

    } 
    else{ 
     correctIncorrectLabel.text = "Incorrect" 
     correctIncorrectLabel.textColor = UIColor.red 
    } 
    randomNumbers() 

} 

func answer2(_ sender: UIButton!){ 
    let c:Int? = Int((answer2B.titleLabel?.text)!) 

    if c == answerNumber{ 
     correctIncorrectLabel.text = "Correct" 
     correctIncorrectLabel.textColor = UIColor.green 

     correctNumber += 1 

    } 
    else{ 
     correctIncorrectLabel.text = "Incorrect" 
     correctIncorrectLabel.textColor = UIColor.red 
    } 
    randomNumbers() 
} 
func answer3(_ sender: UIButton!){ 
    let d:Int? = Int((answer3B.titleLabel?.text)!) 

    if d == answerNumber{ 
     correctIncorrectLabel.text = "Correct" 
     correctIncorrectLabel.textColor = UIColor.green 
     correctNumber += 1 

    } 
    else{ 
     correctIncorrectLabel.text = "Incorrect" 
     correctIncorrectLabel.textColor = UIColor.red 
    } 
    randomNumbers() 
    printProblem() 
} 



func randomNumbers(){ 
    firstNumber = Int(arc4random_uniform(9)) 
    secondNumber = Int(arc4random_uniform(9)) 
    answerNumber = firstNumber + secondNumber 
    printProblem() 

    randomButton = Int(arc4random_uniform(4)) 
    incorrectAnswer1 = Int(arc4random_uniform(18)) 
    incorrectAnswer2 = Int(arc4random_uniform(18)) 
    incorrectAnswer3 = Int(arc4random_uniform(18)) 
    showTextOnButton() 
    totalCorrect.text = "Total Correct: \(correctNumber)" 

} 

func showTextOnButton(){ 
    if randomButton == 0 { 
     answer0B.setTitle("\(answerNumber)", for: .normal) 
     answer1B.setTitle("\(incorrectAnswer1)", for: .normal) 
     answer2B.setTitle("\(incorrectAnswer2)", for: .normal) 
     answer3B.setTitle("\(incorrectAnswer3)", for: .normal) 
    } 
    if randomButton == 1 { 
     answer1B.setTitle("\(answerNumber)", for: .normal) 
     answer0B.setTitle("\(incorrectAnswer1)", for: .normal) 
     answer2B.setTitle("\(incorrectAnswer2)", for: .normal) 
     answer3B.setTitle("\(incorrectAnswer3)", for: .normal) 
    } 

    if randomButton == 2 { 
     answer1B.setTitle("\(answerNumber)", for: .normal) 
     answer2B.setTitle("\(incorrectAnswer1)", for: .normal) 
     answer0B.setTitle("\(incorrectAnswer2)", for: .normal) 
     answer3B.setTitle("\(incorrectAnswer3)", for: .normal) 
    } 

    if randomButton == 3 { 
     answer1B.setTitle("\(answerNumber)", for: .normal) 
     answer2B.setTitle("\(incorrectAnswer1)", for: .normal) 
     answer3B.setTitle("\(incorrectAnswer2)", for: .normal) 
     answer0B.setTitle("\(incorrectAnswer3)", for: .normal) 
    } 

} 


func printProblem(){ 
    questionLabel.text = "\(firstNumber) + \(secondNumber)" 
} 

func makeButtonWithName(button: UIButton,title: String, font: String, fontSize: Int, frame: CGRect, selector: Selector) { 

    let button = UIButton(type: UIButtonType.custom) 
    button.setTitle(title, for: .normal) 
    button.frame = frame 
    button.setTitleColor(UIColor.white, for: .normal) 
    button.titleLabel?.font = UIFont(name: font, size: CGFloat(fontSize)) 
    button.addTarget(self, action: selector, for: .touchUpInside) 
    self.view.addSubview(button) 
} 

これら4つのボタンにはテキストがあります。これらのボタンをクリックすると、ボタンのテキストは変更されません。関数はset titleを使用してボタンのテキストを更新しますが、アプリケーションの実行ごとにボタンは機能しますが、そのテキストは0のままです。

+0

質問を編集して関連するコードをリンク先や画像ではなくテキストとして入力してください。 – rmaddy

+0

関連コードを投稿してください。 1つのボタンに絞って、問題に関連するコードのみを絞り込みます。 – rmaddy

+0

あなたはより正確できちんとしている必要があります.. –

答えて

0

大丈夫です。

button.isEnable = false 

次にクリックアクションの後に、有効にします。だから、基本的に、あなたは多分ことによってそれを無効にしたいまず最初は、ユーザーがボタンをクリックしたときに、また

button.setTitle("new text", for: .normal) 

を使用し、button.textを変更するには再び

ユーザーが意図的に/意図せずにそのボタンを複数クリックしたときに予期しないエラーが発生する可能性があるためです。

関連する問題