如何在 SwiftUI 中的 ForEach 中使用 Section 项执行 onDelete

问题描述

一个全新的项目中,我有这个代码用于测试:

extension Int: Identifiable {
    
    public var id: UUID { UUID() }
}

struct ContentView: View {
    
    let data: [Int] = [1,2,3,4,5]
    
    var body: some View {
        List {
            ForEach(data) {
                Section(header: Text("\($0)")) {
                    ForEach(data) {
                        Text("\($0)")
                    }.onDelete(perform: { indexSet in
                        print("Delete \(indexSet)")
                    })
                }
            }
        }
    }
}

在这种情况下,没有滑动删除之类的操作。认情况下,您可以在将 onDelete 键入 ForEach 后立即滑动并查看删除按钮。但是当您将 Section 放在 ForEach 中时,这不会发生。 当我删除部分时它会出现。即使我在 ForEach 中有 ForEach,它仍然有效。但里面没有 Section - 为什么?

Xcode 12.4 斯威夫特 5

解决方法

您只需要提供一个数组数组,其中包含每个部分的行:

@RepositoryRestResource
public interface UserRepository extends JpaRepository<User,Long>,JpaSpecificationExecutor<User> { }