如何在Swift中删除多项选择题测验中的一个错误选项

如何在Swift中删除多项选择题测验中的一个错误选项,swift,Swift,我正在尝试制作一个测验应用程序 我想添加一个额外的提示功能,当用户按下旁边的提示按钮后,测验应用程序的一个选项消失。然而,现在当我按下提示按钮时,我所有的选项都消失了。我怀疑这是因为我的if语句错误 var currentQuestion = 0 var rightAnswerPlacement:UInt32 = 0 //hint button, making the option disappear @IBAction func hintButtonTapped(_ sender: Any

我正在尝试制作一个测验应用程序

我想添加一个额外的提示功能,当用户按下旁边的提示按钮后,测验应用程序的一个选项消失。然而,现在当我按下提示按钮时,我所有的选项都消失了。我怀疑这是因为我的
if
语句错误

var currentQuestion = 0
var rightAnswerPlacement:UInt32 = 0

//hint button, making the option disappear

@IBAction func hintButtonTapped(_ sender: Any) {
    
    for actionButton in actionButtons {
        if actionButton.currentTitle != String(rightAnswerPlacement)
            //this if condition is wrong, rightAnswerPlacement is a tag/ number where the correct answer lies (i think )
        {
            actionButton.isHidden = true // true to hide the button
        }
    }
} 

@IBOutlet weak var hintButton: UIButton!

//Label for qs
@IBOutlet weak var label: UILabel!

//button for choices

@IBOutlet var actionButtons: [UIButton]!

@IBAction func Action(_ sender: AnyObject)
{
    if (sender.tag == Int(rightAnswerPlacement))
    {
        print("Right")
        
    }
    else
    {
        print("Wrong")
        let alert = UIAlertController(title: "That is incorrect", message: "Try again!", preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: "Dismiss", style: .cancel, handler: nil))
        present(alert, animated: true)
        currentQuestion -= 1
        //how to record which wrong answer the user is pressing
        //let WrongAnswer = sender.tag.titleLabel?.text
    }
}

任何帮助都将不胜感激,谢谢

如果您使用
rightAnswerPlacement
作为您不想隐藏的按钮的标记,那么您可以在答案数量范围内生成一个随机数,但不包括rightAnswerPlacement中的标记

请在ViewController外部添加此扩展:

extension Int {
static func random(upperBound: Int, avoidingNumber: Int) -> Int {
    guard upperBound > 0 else { return 0 }
    var number = Int.random(in: 0...upperBound - 1)
    if number == avoidingNumber {
        number = upperBound
    }
    return number
}
使用此扩展,当用户点击提示按钮时,您应该为要隐藏的错误答案生成一个随机数,然后找到带有刚刚生成的随机标记的按钮并将其隐藏

let randomTag = Int.random(upperBound: 3, avoidingNumber: rightAnswerPlacement)
for actionButton in actionButtons where actionButton.tag == randomTag {
    actionButton.isHidden == true
}

这样,当有人按下提示按钮时,一个随机的错误答案将始终隐藏。

hi rightAnswerPlacement实际上是一个变量,是我正确答案的占位符,因此我想隐藏除正确答案之外的其他三个选项中的任何一个。因此,在使用您的建议之后,我的代码正在做所有的选择,但一个消失,我只想一次消失一个选项嗨!我现在明白了,请检查我编辑过的答案,希望它对我有帮助,这肯定对我的情况有帮助谢谢你的帮助,真的很感激!我很高兴这有帮助!如果我的答案能解决你的问题,请你将我的答案标记为选中,我将不胜感激。问候语!