我希望这个问题不要太愚蠢。我一直在困扰这个问题很长时间,尝试了不同的方法,但我仍然失败了。我对Swift和SwiftUI还是很陌生,这就是为什么也许我看不到明显的原因。
我有一个视图,其中包含一个切换列表。切换列表依赖于setData
,该import SwiftUI
struct GameGenerationView: View {
var body: some View {
VStack {
List(setData, id: \.id) { set in
GameGenerationRow(set: set, store: SetSelectionStore(id: set.id, name: set.name))
}
Button(action: {
print("results")
}) {
Text("Spiel starten")
}
}
.navigationBarTitle("Spielgenerator", displayMode: .inline)
}
}
struct GameGenerationView_Previews: PreviewProvider {
static var previews: some View {
GameGenerationView()
}
}
由包含ID,名称和imageUrl的JSON文件构建。在此视图中,用户可以选择其他设置来开始游戏,
GameGenerationRow
第二个是实际的切换import SwiftUI
struct GameGenerationRow: View {
var set: CardSet
@ObservedObject var store: SetSelectionStore
var body: some View {
HStack {
Toggle(isOn: $store.selection) {
Spacer()
Text(set.name)
.fontWeight(.bold)
}
.frame(height: 35)
}
}
}
struct GameGenerationRow_Previews: PreviewProvider {
static var previews: some View {
GameGenerationRow(set: setData[0], store: SetSelectionStore(id: 1, name: "test"))
}
}
:
SetSelectionStore
每个Toggle的数据都收集在我的import SwiftUI
import Combine
final class SetSelectionStore: ObservableObject {
var id: Int
var name: String
@Published var selection: Bool = false
init(id: Int, name: String) {
self.id = id
self.name = name
}
func returnStore() -> [String:Any] {
return [
"id": self.id,
"name": self.name,
"selection": self.selection
]
}
}
中:
GameGenerationView
按下[
{
name: "Set1"
usedForGame: 0
},
{
name: "Set2"
useForGame: "1"
}
]
中的按钮后,我想从像这样的切换器中收集状态...
/target win|osx|linux
...以便将其传递给选择游戏数据并导航至新视图的功能。
我在Google上搜索了很多,但找不到用于收集不同切换状态的解决方案。有一个简单的方法吗?我选择了一种完全错误的方法吗?希望有人可以帮忙,把我推向正确的方向。
谢谢!