как скрыть или отключить кнопку, связанную с одним и тем же IBAction и разными тегами swift 4.2

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

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

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

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

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

answerPressed.isEnabled = false

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

 answerPressed(sender: AnyObject)

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

import UIKit

класс 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 = ""
}

}

Благодарность


person Walid A.Ali    schedule 20.10.2018    source источник


Ответы (1)


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

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

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

person April    schedule 20.10.2018
comment
Я новичок в Swift, я не знал, что могу одновременно подключить одну кнопку с IBAction и IBOutlet, большое спасибо :) - person Walid A.Ali; 20.10.2018