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



我正在尝试制作一个智力竞赛应用程序。

我想添加一个额外的提示功能,在用户按下侧面的提示按钮后,问答应用程序的一个选项就会消失。然而,现在当我按下提示按钮时,我所有的选项都消失了。我怀疑这是因为我的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作为从不想隐藏的按钮的标记,那么您可以在答案数量的范围内生成一个随机数,但不包括右侧AnswerPlacement中的标记。

请在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
}

使用这个扩展,当用户点击提示按钮时,你应该为你想要隐藏的错误答案生成一个随机数,然后用刚刚生成的randomTag找到按钮并隐藏它。

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

这样,当有人按下提示按钮时,一个随机的错误答案总是会被隐藏起来。

最新更新