如何在列表中的 SwiftUI 选取器中自定义所选项目复选标记图标

How to customize selected item checkmark icon in SwiftUI Picker in List

提问人:subsp4ce 提问时间:8/2/2023 更新时间:8/2/2023 访问量:126

问:

使用 SwiftUI,我如何在这个简单的选取器中自定义所选风格的复选标记图标?

struct ContentView: View {
    var flavors = ["orange", "strawberry", "lemon"]
    @State private var selected: String = "orange"

    var body: some View {
        List {
            Picker("Choose a flavor", selection: $selected) {
                ForEach(flavors, id: \.self) {
                    Text($0)
                }
            }
            .pickerStyle(.inline)
        }
        
    }
}

简单选取器

swiftui-list swiftui-picker

评论

1赞 lorem ipsum 8/2/2023
您必须使用列表创建自己的选取器

答:

0赞 devdchaudhary 8/2/2023 #1

您必须在列表中创建自己的自定义视图,以允许用户选择如下选项

struct ContentView2: View {
    
    var flavors = ["orange", "strawberry", "lemon"]
    @State private var selected: String = "orange"
    
    var body: some View {
        List {
            ForEach(flavors, id: \.self) { flavor in
                Button {
                    withAnimation {
                        selected = flavor
                    }
                } label: {
                    FlavorRow(flavor: flavor, isSelected: flavor == selected)
                        .tag(flavor)
                }
            }
        }
    }
}

struct FlavorRow: View {
    
    var flavor: String
    var isSelected: Bool

    var body: some View {
        HStack {
            
            Text(flavor)
            
            Spacer()
            
            if isSelected {
                Image(systemName: "checkmark.seal")
                    .foregroundColor(.accentColor)
            }
        }
    }
}