我厌倦了为动态选择器构建基于user3441734 解决方案的多组件选择器。这个选择器存在于它自己的 .swift 文件中。我不知道如何将选择保存在变量中以再次从另一个视图访问它。
到目前为止,这是我的代码。我在下面用 an 及其错误消息标记了我的错误解决方案。
import SwiftUI
struct DynamicPicker: View {
@ObservedObject var model = Model()
// var to store the selection
@State var selection: String = ""
var body: some View {
VStack {
GeometryReader { geometry in
HStack {
Picker(selection: self.$model.selectedManufacturer, label: Text("")){
ForEach(0 ..< self.model.manufacturerNames.count){ index in
Text(self.model.manufacturerNames[index])
}
}.labelsHidden()
.frame(maxWidth: geometry.size.width * CGFloat(0.3333))
.clipped()
Picker(selection: self.$model.selectedStock, label: Text("")){
ForEach(0 ..< self.model.stockNamesCount){ index in
Text(self.model.stockNames[index])
}
}
.id(self.model.id)
.labelsHidden()
.frame(maxWidth: geometry.size.width * CGFloat(0.6666))
.clipped()
}
}
// Show selection
Text("\(self.model.manufacturerNames[model.selectedManufacturer])-\(self.model.stockNames[model.selectedStock])")
// Save selection to variable
selection = "\(self.model.manufacturerNames[model.selectedManufacturer])-\(self.model.stockNames[model.selectedStock])"
}
}
}
类型 '()' 不能符合 'View';只有结构/枚举/类类型可以符合协议