有誰知道為什么此代碼會導致致命錯誤:當我嘗試從串列中洗掉專案時,索引超出范圍?目前我能夠創建更多文本欄位并填充它們,但無法在應用程式崩潰的情況下洗掉任何內容。
import SwiftUI
struct options: View {
@State var multiOptions = [""]
var body: some View {
VStack {
List {
ForEach(multiOptions.indices, id: \.self) { index in
TextField("Enter your option...", text: $multiOptions[index])
}
.onDelete(perform: removeRow)
}
Button {
multiOptions.append("")
} label: {
Image(systemName: "plus.circle")
}
}
}
func removeRow(at offsets: IndexSet) {
multiOptions.remove(atOffsets: offsets)
}
}
uj5u.com熱心網友回復:
這是自定義系結的答案:
struct ContentView: View {
@State var multiOptions = [""]
var body: some View {
VStack {
List {
ForEach(multiOptions.indices, id: \.self) { index in
TextField("Enter your option...", text: Binding(get: { return multiOptions[index] },
set: { newValue in multiOptions[index] = newValue }))
}
.onDelete(perform: removeRow)
}
Button {
multiOptions.append("")
} label: {
Image(systemName: "plus.circle")
}
}
}
func removeRow(at offsets: IndexSet) {
multiOptions.remove(atOffsets: offsets)
}
}
uj5u.com熱心網友回復:
這似乎令人難以置信,但顯然將物體中的屬性命名為“id”是導致這種行為的原因。我將 UUID 屬性的名稱更改為“myID”,洗掉現在可以作業了。串列視圖在預覽中仍然完全不起作用,但它現在可以在模擬器和設備中運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/326315.html
