gpt4 book ai didi

ios - 如何结束开关盒

转载 作者:行者123 更新时间:2023-11-30 12:52:39 24 4
gpt4 key购买 nike

我创建了一个包含随机问题的类,但是 switch 语句没有结束,问题继续循环。如何防止这种情况发生并在随机完成所有 4 个问题后显示另一个页面?

import UIKit

class ThirdViewController: UIViewController {


@IBOutlet weak var Question: UILabel!
@IBOutlet weak var Ans1: UIButton!
@IBOutlet weak var Ans2: UIButton!
@IBOutlet weak var Ans3: UIButton!
@IBOutlet weak var Ans4: UIButton!
@IBOutlet weak var Result: UILabel!
@IBOutlet weak var Next: UIButton!
var correctAns = String()

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.

Hide()
Random()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

func Random(){
var RandomNumber = arc4random() % 4
RandomNumber += 1

switch (RandomNumber) {
case 1:
Question.text = "Where does minal lives?"
Ans1.setTitle("dubai", for: UIControlState.normal)
Ans2.setTitle("london", for: UIControlState.normal)
Ans3.setTitle("india", for: UIControlState.normal)
Ans4.setTitle("japan", for: UIControlState.normal)
correctAns = "2"
break
case 2:
Question.text = "What is my name?"
Ans1.setTitle("Sunil", for: UIControlState.normal)
Ans2.setTitle("Harish", for: UIControlState.normal)
Ans3.setTitle("Rohit", for: UIControlState.normal)
Ans4.setTitle("Minal", for: UIControlState.normal)
correctAns = "4"
break
case 3:
Question.text = "How old are you?"
Ans1.setTitle("22", for: UIControlState.normal)
Ans2.setTitle("32", for: UIControlState.normal)
Ans3.setTitle("21", for: UIControlState.normal)
Ans4.setTitle("28", for: UIControlState.normal)
correctAns = "1"
break
case 4:
Question.text = "What are you studying?"
Ans1.setTitle("Computer Science", for: UIControlState.normal)
Ans2.setTitle("Java", for: UIControlState.normal)
Ans3.setTitle("Bio", for: UIControlState.normal)
Ans4.setTitle("Business", for: UIControlState.normal)
correctAns = "3"

break

default:
Result.text = "Finished"
break


}

}

func Hide(){
Result.isHidden = true
Next.isHidden = true
}

func Unhide(){
Result.isHidden = false
Next.isHidden = false
}




@IBAction func Ans1Action(_ sender: Any) {
Unhide()
if (correctAns == "1"){
Result.text = "Correct!"
}
else{
Result.text = "Try Again"
}
}


@IBAction func Ans2Action(_ sender: Any) {
Unhide()
if (correctAns == "2"){
Result.text = "Correct!"
}
else{
Result.text = "Try Again"
}
}


@IBAction func Ans3Action(_ sender: Any) {
Unhide()
if (correctAns == "3"){
Result.text = "Correct!"
}
else{
Result.text = "Try Again"
}
}


@IBAction func Ans4Action(_ sender: Any) {
Unhide()
if (correctAns == "4"){
Result.text = "Correct!"
}
else{
Result.text = "Try Again"
}
}

@IBAction func NextAction(_ sender: Any) {
Random()
Hide()
}

}

最佳答案

您需要记录已提出的问题数量。 switch (RandomNumber) 将始终输入 case 语句之一,因为 RandomNumber 始终在 1...4 范围内.

所以,你需要做的是添加一个实例变量

private var questionCounter = 0

并修改NextAction函数,如下所示:

@IBAction func NextAction(_ sender: Any) {
questionCounter += 1
if questionCounter >= 4 {
Result.text = "Finished"
// or whatever...
}
else {
Random()
Hide()
}
}

请记住,每次执行 arc4random() 时,同一问题可能会出现多次。

关于ios - 如何结束开关盒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40769698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com