SwiftUI Picker 在对源使用结构数据时不会 'pick data'
SwiftUI Picker does not 'pick data' when using struct data for source
我找不到我相信会很简单的答案!。
选择器毫无问题地显示所有值,但不选择所选值。
我尝试在 ForEach(section.serie, id: .self.id) 中添加 ', id: .self.id' 但这不会改变任何东西。
结构用作所有数据的'tables'
struct Eseries: Codable, Identifiable {
var id: UUID
var name: String
var serie: [EserieData]
}
struct EserieData: Codable, Equatable, Identifiable {
var id: UUID
var name: String
var values: [String]
json 文件的摘录
[
{
"id": "EF1CC5BB-4785-4D8E-AB98-5FA4E00B6A66",
"name": "e-series",
"serie": [
{
"id": "EDCD038C-036F-4C40-826F-61C88CD84DDD",
"name": "E3 50%",
"values": ["100", "220", "470"]
},
ContentView 的摘录
//load data from json file
let eserie = Bundle.main.decode([Eseries].self, from: "eseries.json")
@State private var selectedSerie = "E24 5%"
VStack {
Text("E-Serie")
Picker("E-Serie", selection: $selectedSerie) {
ForEach(eserie) { section in
Section() {
ForEach(section.serie) { item in
Text(item.name)
}
}
}
}
.padding()
.frame(maxWidth: geometry.size.width / 3)
.clipped()
.border(Color.red)
}
Picker with its data
我不知道答案。
我不再使用 json,否则仅仅提取 'data' 来初始化 table 就太复杂了。
我创建了 2 tables。每个 Picker 一个,这个工作正常。
我找不到我相信会很简单的答案!。 选择器毫无问题地显示所有值,但不选择所选值。 我尝试在 ForEach(section.serie, id: .self.id) 中添加 ', id: .self.id' 但这不会改变任何东西。
结构用作所有数据的'tables'
struct Eseries: Codable, Identifiable {
var id: UUID
var name: String
var serie: [EserieData]
}
struct EserieData: Codable, Equatable, Identifiable {
var id: UUID
var name: String
var values: [String]
json 文件的摘录
[
{
"id": "EF1CC5BB-4785-4D8E-AB98-5FA4E00B6A66",
"name": "e-series",
"serie": [
{
"id": "EDCD038C-036F-4C40-826F-61C88CD84DDD",
"name": "E3 50%",
"values": ["100", "220", "470"]
},
ContentView 的摘录
//load data from json file
let eserie = Bundle.main.decode([Eseries].self, from: "eseries.json")
@State private var selectedSerie = "E24 5%"
VStack {
Text("E-Serie")
Picker("E-Serie", selection: $selectedSerie) {
ForEach(eserie) { section in
Section() {
ForEach(section.serie) { item in
Text(item.name)
}
}
}
}
.padding()
.frame(maxWidth: geometry.size.width / 3)
.clipped()
.border(Color.red)
}
Picker with its data
我不知道答案。 我不再使用 json,否则仅仅提取 'data' 来初始化 table 就太复杂了。 我创建了 2 tables。每个 Picker 一个,这个工作正常。