Acemi bir SwiftUİ geliştiricisiyim ve bir kullanıcının bu görünümdeki önceki seçimine göre dinamik olarak farklı seçiciler sunan bir görünüm oluşturmakta sorun yaşıyorum. Sorunu görmek için Simülatörde aşağıdaki kodu çalıştırın, pickerOneSelection öğesini "Picker Three" olarak değiştirin, ardından "Picker Two" olarak değiştirin ve pickerTwoSelection öğesini değiştirmeye çalışın. Uygulama hemen çökecek; Bu oyuncak örneğindeki özel hata "İş Parçacığı 1: EXC_BAD_ACCESS (kod=1, adres=0x8)" dir. Herhangi bir anlayış en açığız!
Olarak bir kenara, ben baktım bu sorular: (SwiftUİ hiyerarşik Seçici ile dinamik veri çöker) ve (swiftUi : 2 Toplayıcılar üzerinde bir ekran - app crash ile "Index out of range"), ama mümkünse istiyorum dönüştürme önlemek için benim dize seçimi değişkenleri (pickerOneSelection, pickerThreeSelection) içine tamsayılar, hangi gerekir o zaman geri çevrilir içine dizeleri olsun metni ile ilgili kullanıcı seçimi. Endeks değişkenleri olmadan yapmaya çalıştığım şeyi yapmak mümkün değilse, nedenini anlamama yardımcı olabilirseniz, bu çok yardımcı olacaktır.
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
Yardımlarınız ve uzmanlığınız için çok teşekkürler!