如何隐藏或禁用与相同 IBAction 和不同标签连接的按钮 swift 4.2

how to hide or disable button connected with the same IBAction and different tags swift 4.2

我正在尝试创建一个显示问题的测验应用程序,然后用户将 select 通过按两个按钮 [true / false] 中的一个来回答,然后按下一步按钮移动到下一个问题。

我想隐藏回答按钮或在用户 select 使用其中一个按钮后禁用它们,然后出现下一个按钮。

这两个答案按钮与同一个 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 = ""
}

}

谢谢

如果我误解了这个问题,我深表歉意。听起来好像您想在按下其中一个按钮后禁用 true 和 false 按钮​​。但是,我在您的 IBOutlet 变量列表中没有看到它们中的任何一个。您不能直接引用它们,因为 class 不知道它们。

在 answerPressed 函数中,您可以使用发件人参考来禁用发件人(是或否按钮),但您将无法禁用未被选中的发件人。

我怀疑您需要做的就是为您的 true 和 false 按钮​​创建 IBOutlets,将它们映射到视图,然后您可以使用它们做任何您喜欢的事情。