首页 > 解决方案 > SwiftUI:编辑部分内的列表

问题描述

没有Formand Section,我可以编辑一个列表:

var body: some View {
            List {
                ForEach(modeConfigurations.sorted, id: \.id) { item in
                    Text("\(item.defaultSortIndex)")
                }
                .onMove(perform: move)
            }
            .navigationBarItems(trailing:
                   EditButton()
            )
} // Body

在此处输入图像描述

我想在 aSection的 a 中进行编辑Form,但它在那里不起作用:

var body: some View {
    Form{
        Section(header: Text("Sort")){
            List {
                ForEach(modeConfigurations.sorted, id: \.id) { item in
                    Text("\(item.defaultSortIndex)")
                }
                .onMove(perform: move)
            }
            .navigationBarItems(trailing:
                   EditButton()
            )
        } // Sort Section
    } // Form
} // Body

我无法编辑,Text内部ForEach没有呈现为单独的行。

在此处输入图像描述

如何编辑 a Listinside a Sectionof a Form

标签: iosswiftswiftuiswiftui-listswiftui-form

解决方案


您应该穿上它.navigationBarItems(trailing: EditButton())Form使其正常工作。

也不List需要,因为Section已经“表现得像” a List。(感谢@Sweeper 提及)

var body: some View {
    Form {
        Section(header: Text("Sort")) {
            // List { // <- This is not needed as Section contains an implicit list.
                ForEach(modeConfigurations.sorted, id: \.id) { item in
                    Text("\(item.defaultSortIndex)")
                }
                .onMove(perform: move)
            // } // <- Removeed this as we removed `List`
        } // Sort Section
    } // Form
    .navigationBarItems(trailing: EditButton()) // <- Misplacing this was the issue.
} // Body

推荐阅读