在SwiftUI中删除整个列表
有没有办法删除SwiftUI中的所有列表项? 我在在SwiftUI中删除整个列表,swiftui,swiftui-list,Swiftui,Swiftui List,有没有办法删除SwiftUI中的所有列表项? 我在List()中使用ForEach(),我希望有一个“全部清除”按钮来删除列表中的所有项目,有办法吗 struct SwiftUIView: View { @State var filters : [filter] = [filter(name: "new"), filter(name: "old"), filter(name: "some")] @State var a
List()
中使用ForEach()
,我希望有一个“全部清除”按钮来删除列表中的所有项目,有办法吗
struct SwiftUIView: View {
@State var filters : [filter] = [filter(name: "new"), filter(name: "old"), filter(name: "some")]
@State var afterFilters : [someFilter] = []
var body: some View {
List{
ForEach(0..<self.filters.count, id:\.self){ i in
filterRepresent(string: self.$afterFilters[i].filter.name, isOn: self.$afterFilters[i].isOn)
}
}.onAppear {
for filter in self.filters {
self.afterFilters.append(someFilter(filter: filter))
}
}
}
}
struct filterRepresent : View {
@Binding var string : String
@Binding var isOn : Bool
var body : some View {
HStack{
Text(string)
Toggle("",isOn: $isOn)
}
}
}
struct filter {
var name : String
var isOn : Bool
init(name: String){
self.name = name
self.isOn = false
}
}
struct someFilter : Identifiable{
var id : Int
var filter : filter
var isOn : Bool
init(filter : filter){
self.id = Int.random(in: 0...100000)
self.filter = filter
self.isOn = filter.isOn
}
}
我得到的错误是:
致命错误:索引超出范围:file/Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-1103.2.25.13/swift/stdlib/public/core/contiguousarrarybuffer.swift,第444行您必须清理模型,视图将自动刷新 下面是一个简单的演示:
struct DemoCleanUpList: View {
@State private var persons = ["Person 1", "Person 2", "Person 3"]
var body: some View {
VStack {
Button("CleanUp") { self.persons.removeAll() }
List {
ForEach(persons, id: \.self) { person in
Text(person)
}
}
}
}
}
所以,出于某种原因,当我这样做的时候,我会得到一个索引外错误,为什么会这样呢?我使用带有数组计数的ForEach循环要修改ForEach的内容,需要使用ForEach动态构造函数。有关详细信息,请参阅。我正在使用构造函数,就像您发送的示例一样,非常奇怪
struct DemoCleanUpList: View {
@State private var persons = ["Person 1", "Person 2", "Person 3"]
var body: some View {
VStack {
Button("CleanUp") { self.persons.removeAll() }
List {
ForEach(persons, id: \.self) { person in
Text(person)
}
}
}
}
}