Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建分段控件并从SwiftUI读取值?_Swiftui - Fatal编程技术网

如何创建分段控件并从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)")
        }
    }
}