从SwiftUI中的切换列表中读取值

时间:2020-03-24 17:45:12

标签: swift list swiftui toggle

我希望这个问题不要太愚蠢。我一直在困扰这个问题很长时间,尝试了不同的方法,但我仍然失败了。我对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上搜索了很多,但找不到用于收集不同切换状态的解决方案。有一个简单的方法吗?我选择了一种完全错误的方法吗?希望有人可以帮忙,把我推向正确的方向。

谢谢!

0 个答案:

没有答案