ฉันเป็นสำหรับค SwiftUI ผู้พัฒนา,และฉันมีปัญหาเรื่องการสร้างมุมมองที่ dynamically ของขวัญแตกต่าง pickers โดยอิงค่าพื้นฐานจากเป็นของผู้ใช้ก่อนหน้าส่วนที่เลือกในมุมมอง เพื่อเห็นปัญหาของวิ่งต่อไปนี้ดรหัสใน simulator กับเขาเปลี่ยนค pickerOneSelection ต้อง"Picker สาม"แล้วเปลี่ยนแปลงมันกลับไป"Picker สองคน"และพยายามเปลี่ยนค pickerTwoSelection. แอพฯจะทันทีตองกาเจาะจงเกิดข้อผิดพลาดกับเรื่องนี้ของเล่นตัวอย่างเช่นคือ"เธรด 1:EXC_BAD_ACCESS(รหัส=1,ที่อยู่ของ=0x8)". มีใครติดต่อกลับมาเลยหรืคือส่วนใหญ่ยินดีต้อนรั!
เป็นข้ลังจากเรื่องที่ผ่านมาฉันต้องมองพวกนี้ถามคำถาม:(SwiftUI ลำดับชั้นการสืบทอด Picker กับแมสซีฟไดนามิข้อมูลของข้อขัดข้องต่างๆ)และ(swiftUi:2 Pickers บหนึ่งจอภาพ-โปรแกรมเกี่ยวพันกับ"ดัชนีออกนอกระยะทาง")แต่หากเป็นไปได้ฉันอยากจะหลีกเลี่ยงการเปลี่ยนข้อความของฉันการเลือกตัวแปร(pickerOneSelection,pickerThreeSelection)ใน integers ซึ่งต้องแล้วแปลขภาษาองกลับไปใช้เส้นสายเพื่อให้ข้อความที่เกี่ยวข้องกับผู้ใช้การเลือก. ถ้ามันเป็นไปไม่ได้ที่จะทำในสิ่งที่ฉันพยายามจะทำยังไงถ้าไม่มีดัชนีขอตัวแปรอถ้าคุณช่วยฉันเข้าใจว่าทำไมมันคงจะช่วยได้มากทีเดียว
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
หลายขอบคุณสำหรับความช่วยเหลือของคุณและความเชี่ยวชาญด้าน!