我想在兩個不同的視圖中使用 QuestionView 視圖。但是我在第一視圖中有問題陣列。2. 我在視圖中有 WrongQuestions 陣列。我正在使用@Binding 將這些陣列傳遞到 QuestionView。我不想寫相同的 QuestionView 兩次。我只想更改它將獲得的 @Binding 陣列。
我有兩個不同的模型。1. Question2.WrongQuestion
如何根據這兩種不同的模型設計 QuestionView?
我不希望 QuestionView 只獲取[Question]陣列。我希望它檢索[Question]和[WrongQuestion]陣列。
首先我想顯示 QuestionView
我希望@Binding var questions: [Question]QuestionView 中的陣列在第二個視圖中有 WrongQuestions。我怎樣才能做到這一點 ?
問題查看:
struct QuestionView: View {
@State var selectedQuestion: Int = 1
@StateObject var questionConfig = QuestionConfig()
@Binding var questions: [Question] //
var body: some View {
...........
}
}
1.查看:
測驗類別視圖模型:
final class QuizCategoryViewModel: ObservableObject {
.....
@Published var selectedQuestion: [Question] = []
.....
}
struct QuizCategoryView: View {
@StateObject var quizCategoryViewModel: QuizCategoryViewModel = QuizCategoryViewModel()
var body: some View {
......
QuestionView(questions: $quizCategoryViewModel.selectedQuestion)
......
}
}
2.查看:
錯誤的問題視圖:
如第二個視圖所示,它希望我分配 [Question] 陣列,但我想在這里分配 [WrongQuestion] 陣列。我怎樣才能使這個通用?
struct WrongQuestionView: View {
var body: some View {
QuestionView(questions: <#T##[Question]#>) <---- HERE
}
}

uj5u.com熱心網友回復:
看起來問題中可能缺少一些細節(例如顯示Question和WrongQuestion視圖所在的位置以及包含 的陣列WrongQuestion),但從一般意義上講,聽起來您需要一個protocol既符合Question又WrongQuestion符合又QuestionView可以接受任何一種型別。
protocol QuestionType {
}
struct Question : QuestionType {
}
struct WrongQuestion : QuestionType {
}
struct QuestionView<T:QuestionType>: View {
@Binding var questions: [T]
var body: some View {
Text("Hi")
}
}
struct ContentView: View {
@State var wrongQuestions : [WrongQuestion] = []
@State var questions : [Question] = []
var body: some View {
QuestionView(questions: $wrongQuestions)
QuestionView(questions: $questions)
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/311151.html
