как скрыть или отключить кнопку, связанную с одним и тем же IBAction и разными тегами swift 4.2 - PullRequest
0 голосов
/ 20 октября 2018

Я пытаюсь создать приложение для викторины, которое показывает вопросы, а затем пользователи выбирают ответ, нажимая одну из кнопок буксировки [true / false], а затем нажимают кнопку next, чтобы перейти к следующему вопросу.

Я хочу скрыть кнопки ответа или отключить их после того, как пользователь выберет одну из них, а затем появится следующая кнопка.

две кнопки ответа связаны с одним и тем же IBAction, но имеют разные теги [1 для кнопки true и 2 для кнопки false], кнопка (следующая) связана с другим IBAction.

проблема в том, что я не могу получить доступ к свойствам кнопки !!

он пробовал это

answerPressed.isEnabled = false

, но каждый раз, когда я печатаю имя кнопки, за которым стоит точка, у меня нет предложений, xcode дает мнеошибка "Ожидаемое имя участника после '.'«Единственное предложение, которое у меня есть, это:

 answerPressed(sender: AnyObject)

вот полный код приложения, любые просьбы о помощи:)

import UIKit

class ViewController: UIViewController {

let allQuestion = QuestionBank()
var questionNumber = 0
var score = 0
var selectedAnswer = true


@IBOutlet weak var checkAnswerLabel: UILabel!
@IBOutlet weak var questionLabel: UILabel!
@IBOutlet weak var scoreLabel: UILabel!
@IBOutlet var progressBar: UIView!
@IBOutlet weak var progressLabel: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()

    startOver()
}


@IBAction func answerPressed(_ sender: AnyObject) {

    if sender.tag==1{
        selectedAnswer = true
    }
    else if sender.tag == 2 {
        selectedAnswer = false
    }
    let correctAnswer = allQuestion.list[questionNumber].answer

    if correctAnswer == selectedAnswer {

        checkAnswerLabel.text = "Right ?"
        score += 1
        scoreLabel.text = "score : \(score)"
    }
    else if correctAnswer != selectedAnswer {
        checkAnswerLabel.text = "Wrong ?"

        answerPressed(<#T##sender: AnyObject##AnyObject#>)

    }


}


@IBAction func nextButtonPressed(_ sender: UIButton) {

    if questionNumber < 12 {

        questionNumber += 1
        questionLabel.text = allQuestion.list[questionNumber].question
        checkAnswerLabel.text = ""
        progressLabel.text = "\(questionNumber+1)/13"
}
    else {
        let alert = UIAlertController(title: "Great ?", message: "you have rech the end of the quiz, do you want to restart", preferredStyle: .alert)
        let restartAction = UIAlertAction(title: "Restart", style: .default, handler: ({
            UIAlertAction in
            self.startOver()
        }))
        alert.addAction(restartAction)
        present(alert, animated: true, completion: nil)

    }


}
func startOver () {
    questionNumber = 0
    score = 0
    print(questionNumber)
    questionLabel.text = allQuestion.list[questionNumber].question
    scoreLabel.text = "score: \(score)"
    progressLabel.text = "\(questionNumber+1)/13"
    checkAnswerLabel.text = ""
}

}

спасибо

1 Ответ

0 голосов
/ 20 октября 2018

Извиняюсь, если я неправильно понял вопрос.Звучит так, как будто вы хотите отключить кнопки истина и ложь после нажатия одной из них.Однако я не вижу ни одного из них в вашем списке переменных IBOutlet.Вы не можете ссылаться на них напрямую, потому что они не известны классу.

В функции answerPressed вы можете использовать ссылку отправителя, чтобы отключить отправителя (кнопка true или false), но вы не сможете отключить ту, которая не была выбрана.

IПодозреваю, что все, что вам нужно сделать, это создать IBOutlets для ваших истинных и ложных кнопок, сопоставить их с видом, а затем вы можете делать с ними то, что вам нравится.

...