我在这里查看了不同的问题,但不幸的是我找不到答案。这是我的代码:
SceneDelegate.swift
...
let contentView = ContentView(elementHolder: ElementHolder(elements: ["abc", "cde", "efg"]))
...
window.rootViewController = UIHostingController(rootView: contentView)
Run Code Online (Sandbox Code Playgroud)
内容视图.swift
class ElementHolder: ObservableObject {
@Published var elements: [String]
init(elements: [String]) {
self.elements = elements
}
}
struct ContentView: View {
@ObservedObject var elementHolder: ElementHolder
var body: some View {
VStack {
ForEach(self.elementHolder.elements.indices, id: \.self) { index in
SecondView(elementHolder: self.elementHolder, index: index)
}
}
}
}
struct SecondView: View {
@ObservedObject var elementHolder: ElementHolder
var index: Int
var body: some View {
HStack { …Run Code Online (Sandbox Code Playgroud) 为了在 SwiftUI 上使用 TextField 实现可编辑的 teble,我曾经ForEach(0..<items.count)处理过index.html 。
import SwiftUI
struct DummyView: View {
@State var animals: [String] = ["", ""]
var body: some View {
List {
EditButton()
ForEach(0..<animals.count) { i in
TextField("", text: self.$animals[i])
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果将表更改为可删除,则会出现问题。
import SwiftUI
struct DummyView: View {
@State var animals: [String] = ["", ""]
var body: some View {
List {
EditButton()
ForEach(0..<animals.count) { i in
TextField("", text: self.$animals[i]) // Thread 1: Fatal error: …Run Code Online (Sandbox Code Playgroud)