我是个新手SwiftUI开发,和我有麻烦创造一个看法,即动态提出了不同的采摘根据用户以前的选择在这一观点。 看到的问题,运行以下代码模拟器,改变pickerOneSelection到"三个选择器",然后再改回"两个选择器",并尝试改变pickerTwoSelection. 该应用程序会立即崩溃;具体错误,这个玩具的例子是"螺纹1:EXC_BAD_ACCESS(代码=1,address=0x8)". 任何了解,是大多数的欢迎!
作为旁白,我已经看过这些问题:(SwiftUI层次选择器与动态数据崩溃)和(swiftUi:2个采摘在一个屏幕上的应用程序的崩溃"指标的范围"),但是如果可能的话,我想为了避免转换我的串的选择变量(pickerOneSelection,pickerThreeSelection)成整数,其中必须随后将翻译后进入串获得的文本与用户相关联的选择。 如果这是不可能做我想做的没有索引的变量,如果你能帮我理解了为什么,那将是非常有益的。
import SwiftUI
struct ContentView: View {
@State var pickerOneSelection: String = "Picker Two"
@State var pickerTwoVisible: Bool = false
@State var pickerTwoSelection: Int = 3
@State var pickerThreeSelection: String = "Option 1"
var pickerOneOptions = ["Picker Two", "Picker Three"]
var pickerThreeOptions = ["Option 1", "Option 2", "Option 3"]
var body: some View {
NavigationView {
Form {
Picker("Picker One selection", selection: $pickerOneSelection) {
ForEach(pickerOneOptions, id: \.self) {
Text($0)
}
} // End of Picker 1
if pickerOneSelection == "Picker Two" {
HStack {
Text("Picker Two selection")
Spacer()
Button(String(pickerTwoSelection)) {
self.pickerTwoVisible.toggle()
}
} // End of HStack
if pickerTwoVisible {
Picker("Picker Two", selection: $pickerTwoSelection) {
ForEach(0..<32, id: \.self) {
Text(String($0))
}
}
.pickerStyle(WheelPickerStyle())
} // End of pickerTwoVisible
} else {
Picker("Picker Three selection", selection: $pickerThreeSelection) {
ForEach(pickerThreeOptions, id: \.self) {
Text($0)
}
} // End of Picker 3
}
} // End of Form
} // End of NavigationView
} // End of body
} // End of ContentView
多谢你的帮助和专业知识!