如何创建分段控件并从SwiftUI读取值?
你已经快到了 首先,创建一个名为如何创建分段控件并从SwiftUI读取值?,swiftui,Swiftui,你已经快到了 首先,创建一个名为favoriteColor的变量。您打算使用此变量从选择器获取值,是吗 然后,将该变量传递给选择器。不仅作为变量,而且作为绑定,前面有$符号。这将确保变量始终与选择器保持同步。简单地说,绑定的作用是,实际上只有一个变量,由视图和选择器共享。如果你想知道更多关于这方面的信息,我相信在互联网上有数百个教程,所以如果我再在这里解释一下就没有意义了 因此,将要发生的是,选择器在进行选择时更新您的变量。但是,对于哪个选项,它将为变量提供什么值呢 这就是您在那些.tag(…)
favoriteColor
的变量。您打算使用此变量从选择器获取值,是吗
然后,将该变量传递给选择器。不仅作为变量,而且作为绑定,前面有$
符号。这将确保变量始终与选择器保持同步。简单地说,绑定的作用是,实际上只有一个变量,由视图和选择器共享。如果你想知道更多关于这方面的信息,我相信在互联网上有数百个教程,所以如果我再在这里解释一下就没有意义了
因此,将要发生的是,选择器在进行选择时更新您的变量。但是,对于哪个选项,它将为变量提供什么值呢
这就是您在那些.tag(…)
s中指定的值。因此,当用户选择“红色”时,favoriteColor的值为0,“绿色”为1,“蓝色”为2
当选择更改时更新UI如何?好吧,SwiftUI会自动管理它——这是SwiftUI最好的功能之一
但还有一件事。当您像现在这样使用文本中的值时,您将在运行时看到类似“value:1”的内容。如果我们能显示颜色的名称就好了,不是吗
有很多方法可以做到这一点,但其中之一是将文本(“Value:\(favoriteColor)”
替换为:
Text(“最喜欢的颜色:\([“红色”、“绿色”、“蓝色”][favoriteColor]))
它的作用是创建一个数组,并从中提取与所选颜色的索引相对应的值。因此,当favoriteColor为0时,将提取数组的第一个元素,即“红色”
希望这对您有所帮助!!哪里有问题?
struct ContentView: View {
@State private var favoriteColor = 0
var body: some View {
VStack {
Picker(selection: $favoriteColor, label: Text("What is your favorite color?")) {
Text("Red").tag(0)
Text("Green").tag(1)
Text("Blue").tag(2)
}.pickerStyle(SegmentedPickerStyle())
Text("Value: \(favoriteColor)")
}
}
}