【问题标题】:SwiftUI: edit List inside of a SectionSwiftUI:编辑部分内的列表
【发布时间】:2020-06-21 08:06:03
【问题描述】:

没有FormSection,我可以编辑列表:

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

我想在FormSection 中进行编辑,但它在那里不起作用:

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

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

如何在FormSection 中编辑List

【问题讨论】:

    标签: ios swift swiftui swiftui-list swiftui-form


    【解决方案1】:

    您应该将.navigationBarItems(trailing: EditButton()) 放在Form 上以使其正常工作。

    也不需要List,因为Section 已经“表现得像”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
    

    【讨论】:

    • 我认为您也不需要ListSection 已经“表现得像”List
    • 我知道要更改原始代码。但是正如您提到的,我决定将其添加到答案中。谢谢@Sweeper
    猜你喜欢
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    相关资源
    最近更新 更多