【发布时间】:2020-11-05 15:01:26
【问题描述】:
首先,对不起我的英语不好!我对 SwiftUI 完全陌生,我尝试创建一个包含多个选择和多个答案的测验应用程序。我创建了一个带有 ForEach 的按钮来显示可能的答案。现在我想选择正确的答案并点击复选按钮来验证选择的答案。可能有超过 1 个正确答案。
我试过这个函数,但它只有返回,如果有一个或两个
//MARK:- Funktionen
func checkAnswer() {
if validateAnswer == quiz.correctAnswer {
print("Richtig")
} else {
print("Falsch")
}
}
我不知道如何使用正确答案验证所选答案。谁能帮我? 这是我的代码: 测验模型
struct Quiz: Identifiable {
var id: String = UUID().uuidString
var question: String
var howManyAnswers: String
var options: [PossibleAnswer]
var correctAnswer: [String]
var explain: String
}
extension Quiz: Equatable {}
struct PossibleAnswer : Identifiable, Equatable {
let id = UUID()
let text : String
}
内容视图
struct ContentView: View {
var quiz: Quiz
@State var isChecked:Bool = false
@State private var showAlert: Bool = false
@State var validateAnswer: [String] = ["Antwort 3", "Antwort 4"]
//MARK:- Answers
VStack {
ForEach(quiz.options) { answerOption in
QuizButtonView(isChecked: isChecked, title: answerOption.text)
.foregroundColor(.black)
.padding(2.0)
}
Spacer()
Divider()
HStack {
//MARK:- Button Überprüfen & Zurück
Button(action: {
print("Ich gehe zurück")
}, label: {
Text("Zurück")
})
Button(action: {
checkAnswer()
print("Ich überprüfe...")
self.showAlert.toggle()
}, label: {
Text("Überprüfen")
})
.padding(.leading, 200)
还有我的 CheckButtonView
struct QuizButtonView: View {
@State var isChecked:Bool = false
var title:String
func toggle(){
isChecked.toggle()
if self.isChecked == true {
print("Antwort wurde ausgewählt")
} else if self.isChecked == false {
print("Antwort wurde wieder abgewählt")
}
}
var body: some View {
VStack {
Button(action: toggle) {
HStack{
Text(title)
.font(.system(size: 16))
.foregroundColor(.black)
.lineLimit(3)
Spacer()
Image(systemName: isChecked ? "checkmark.square.fill": "square")
}
}
谢谢!
【问题讨论】:
-
我不确定这是否直接相关,但这个问题是关于一个类似的测验。也许它有帮助? stackoverflow.com/questions/64497666/…
-
感谢您的评论! :) 这个案例对我的案例没有帮助,因为我有例如 5 个可能的答案和复选框。也许一个问题必须纠正答案。选择我的答案后,我将点击检查按钮。比他应该检查答案。
-
@AleksandarNesovanovic 你能分享你的基本代码吗?