gpt4 book ai didi

SwiftUI:使用 Section 重新排序会导致应用程序崩溃

转载 作者:行者123 更新时间:2023-12-04 03:51:49 24 4
gpt4 key购买 nike

目标:多个 TextView 在视觉上分离,就像 Section{} 所提供的一样,同时还能够在编辑模式下重新排列列表中的项目。{} (我不是 100% 设置只使用部分,但我还没有找到一种方法来在视觉上区分表单或列表。)
问题:使用 Section{} 时,应用在重新排列时崩溃。{}
错误信息: '无效更新:第 2 节中的行数无效。更新后现有节中包含的行数 (1) 必须等于更新前该节中包含的行数 (0),加上或减去从该部分插入或删除的行数(0 插入,0 删除),加上或减去移入或移出该部分的行数(0 移入,0 移出)。
代码:

struct SingleItem: Identifiable {
let id = UUID()
let item: String
}

class ItemGroup: ObservableObject{
@Published var group = [SingleItem]()
}

struct ContentView: View {
@ObservedObject var items = ItemGroup()
@State private var editMode = EditMode.inactive

var body: some View {
NavigationView{
Form {
Button("Add Item"){
addButton()
}
ForEach(Array(items.group.enumerated()), id: \.element.id) { index, item in
Section{
Text(items.group[index].item)
}
}
.onMove(perform: onMove)
}
.navigationBarTitle("List")
.navigationBarItems(trailing: EditButton())
.environment(\.editMode, $editMode)

}
}

func addButton() {
let newItem = SingleItem(item: "Word - \(items.group.count)")
self.items.group.append(newItem)

}


private func onMove(source: IndexSet, destination: Int) {
items.group.move(fromOffsets: source, toOffset: destination)
}
}

最佳答案

改用 .indices .经测试,在 Xcode 12/iOS 14 上没有崩溃。

    Form {
ForEach(items.indices, id: \.self) { i in
Section {
Text(items[i].title)
}
}
.onMove(perform: onMove)
}

关于SwiftUI:使用 Section 重新排序会导致应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64344213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com