【发布时间】:2019-10-12 09:35:53
【问题描述】:
我刚开始学习 SwiftUI,但在某个地方卡住了!
我正在尝试在更改另一个段的值时更改段样式选择器数据源。但不知何故,它没有按预期工作!否则我可能编码错误。请问有大神能解答一下吗?
这是我的一段代码:
import SwiftUI
struct ContentView: View {
@State var selectedType = 0
@State var inputUnit = 0
@State var outputUnit = 1
let arrTypes = ["Temperature", "Length"]
var arrData: [String] {
switch self.selectedType {
case 0:
return ["Celsius", "Fahrenheit", "Kelvin"] //Temperature
case 1:
return ["meters", "kilometers", "feet", "yards", "miles"] //Length
default:
return ["Celsius", "Fahrenheit", "Kelvin"]
}
}
var body: some View {
NavigationView{
Form
{
Section(header: Text("Choose type"))
{
Picker("Convert", selection: $selectedType) {
ForEach(0 ..< 2, id: \.self)
{ i in
Text(self.arrTypes[i])
}
}
.pickerStyle(SegmentedPickerStyle())
}
Section(header: Text("From"))
{
Picker("", selection: $inputUnit) {
ForEach(0 ..< arrData.count, id: \.self)
{
Text(self.arrData[$0])
}
}
.pickerStyle(SegmentedPickerStyle())
}
Section(header: Text("To"))
{
Picker("", selection: $outputUnit) {
ForEach(0 ..< arrData.count, id: \.self)
{
Text(self.arrData[$0])
}
}
.pickerStyle(SegmentedPickerStyle())
}
}
}
}
}
当我将段从Length 更改回Temperature 时,它会以某种方式合并数组。我尝试在日志中调试并打印 arrData 计数,然后它打印正确的结果但不更新 UI!
更改细分:
将片段改回第一个:
任何帮助或建议将不胜感激。
【问题讨论】:
标签: ios swift swiftui ios13 picker