[英]SwiftUI Picker doesn't update data when selecting a new row
SwiftUI 选择器在选择新行时不会更新数据。 我试图通过 Binding 传递数据,但它似乎不起作用。 当我删除绑定逻辑时,一切正常。
ContentView.swift
import SwiftUI
struct ContentView: View {
var colors = ["Red", "Green", "Blue", "Tartan"]
@State private var showPicker: Bool = false
@Binding var selectedColor: String
var body: some View {
PanelView(showPicker: .constant(false))
VStack {
Picker("Please choose a color", selection: $selectedColor) {
ForEach(colors, id: \.self) {
Text($0)
}
}
}
}
}
PanelView.swift
import SwiftUI
struct PanelView: View {
@Binding var showPicker: Bool
@State private var selectedColor = "Red"
var body: some View {
HStack(spacing: 10) {
Text("You selected: \(selectedColor)")
}
}
}
对不起我的英语,希望有人可以看看这个问题。
.constant
是一个死胡同,不要在任何地方使用它,而是在“ Previews
”部分模拟事实来源。
@State
是事实的来源,它没有父级。
@Binding
是双向连接。 它没有保存价值的能力。
import SwiftUI
struct ContentView: View {
var colors = ["Red", "Green", "Blue", "Tartan"]
@State private var showPicker: Bool = false
@State private var selectedColor: String = "Red"
var body: some View {
PanelView(showPicker: $showPicker, selectedColor: $selectedColor)
VStack {
Picker("Please choose a color", selection: $selectedColor) {
ForEach(colors, id: \.self) {
Text($0)
}
}
}
}
}
struct PanelView: View {
@Binding var showPicker: Bool
@Binding var selectedColor : String
var body: some View {
HStack(spacing: 10) {
Text("You selected: \(selectedColor)")
}
}
}
试试Apple SwiftUI 教程,所有这些都是非常基本的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.