SwiftUI: редактировать список внутри раздела

Без Form и Section я могу редактировать список:

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

введите описание изображения здесь

Я хотел бы редактировать внутри Section из 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 не отображается как отдельная строка.

введите описание изображения здесь

Как я могу отредактировать List внутри Section из Form?


person Gerd Castan    schedule 21.06.2020    source источник


Ответы (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
person Mojtaba Hosseini    schedule 21.06.2020
comment
Я не думаю, что тебе тоже нужен List. Section уже действует как List. - person Sweeper; 21.06.2020
comment
Я знал, что нужно изменить исходный код. Но, как вы упомянули, я решил добавить это к ответу. Спасибо @Sweeper - person Mojtaba Hosseini; 21.06.2020