使用分区时,列表中的 SwiftUI 选取器会在顶部添加额外的行

SwiftUI Picker in List adding extra row on top when using sections

提问人:alionthego 提问时间:5/7/2023 更新时间:5/7/2023 访问量:259

问:

我在列表中有一个 SwiftUI 内联选择器。它工作正常,但是当我将其包含在一个部分中时,每个部分的顶部都会出现一个空行,并带有内联选择器。无论如何都可以删除这个空行吗?如果我删除该部分,空行就会消失。

@State var color: String = "Red"
var colors: [String] = ["Red", "Green", "Blue"]

var body: some View {
    List {
        Section(header: Text("Colors")) {
            Picker("", selection: $color) {
                ForEach(colors, id: \.self) { color in
                    Text(color)
                }
            }
            .pickerStyle(InlinePickerStyle())
        }
    }
}

enter image description here

var body: some View {
    List {
        Picker("", selection: $color) {
            ForEach(colors, id: \.self) { color in
                Text(color)
            }
        }
        .pickerStyle(InlinePickerStyle())
    }
}

enter image description here

iOS Xcode SwiftUI swiftUI-list swiftui-picker

评论

0赞 workingdog support Ukraine 5/7/2023
只需添加到.labelsHidden()Picker

答:

1赞 Joakim Danielson 5/7/2023 #1

将 init 更改为带有空标签可解决此问题init(selection:content:label:)

Section("Colors") {
    Picker(selection: $color) {
        ForEach(colors, id: \.self) { color in
            Text(color)
        }
    } label: {}
    .pickerStyle(.inline)
}

或者正如@workingdogsupportUkraine的评论中提到的,您也可以使用修饰符.labelsHidden()

Section(header: Text("Colors")) {
    Picker("Picker", selection: $color) {
        ForEach(colors, id: \.self) { color in
            Text(color)
        }
    }
    .pickerStyle(InlinePickerStyle())
    .labelsHidden()
}