MultiPicker

1.0.6

A Picker for iOS that can be used to choose from one, one or none, or multiple options.
toastersocks/MultiPicker

What's New

2024-03-06T01:03:36Z

Right-align the rich choice representations when they flow onto more than one line.
This release updates the minimum supported iOS version to 16.

MultiPicker


A picker for selecting from multiple options. Or no options

SwiftUI's Picker on iOS only allows choosing exactly one option. If you need a picker that allows selecting one optional value, or multiple values from a set, you're outta luck. MultiPicker can do all three!

Navigation link style, plain text choice style, light mode, English Navigation link style, rich choice style, dark mode, English Navigation link style, rich choice style, dark mode, Portuguese Navigation link style, rich choice style, dark mode, Arabic Inline style, leading and trailing selection indicator, light mode, English Inline style, leading and trailing selection indicator, dark mode, Arabic

MultiPicker tries to make its API as close to the SwiftUI Picker's as possible.

MultiPicker supports localization and accessibility and has better default accessibility than Picker. MultiPicker supports string initializers as well as custom label views. MultiPicker has a few additions and deviations from Picker:

  • Supports putting the selection indicator (checkmark) on either the leading or trailing side of options via the selectionIndicatorPosition(_:) modifier.
  • Currently only supports inline and navigationLink style pickers.
  • The picker style is set using the mpPickerStyle(_:) instead of pickerStyle(_:) modifier.
  • Views are tagged using the mpTag(_:) modifier instead of tag(_:)
  • The pushed picker list is inset grouped instead of grouped because I think that looks nicer.

Usage

Usage of MultiPicker is very similar to Picker:

struct MyView: View {
    @State private var selection: Set<Model> = []
    @State private var options: [Model]

    var body: some View {
        Form {
            MultiPicker("Choose something", selection: $selection) {
                ForEach(options) { option in
                    ModelCell(model: option)
                        .mpTag(option)
                }
            }
            .mpPickerStyle(.navigationLink)
        }
    }
}

Check the documentation for more in-depth usage.

Installing

Swift Package Manager

Via Xcode

  • Select your .xcproject file
  • Select the project under PROJECT
  • Select Swift Package
  • Tap the + sign
  • Paste this repo's address https://github.com/toastersocks/MultiPicker into the text field and hit 'Next'
  • Choose your version/branch on the next screen
  • Choose your targets and hit 'Finish'

Description

  • Swift Tools 5.7.0
View More Packages from this Author

Dependencies

Last updated: Wed Apr 24 2024 02:51:11 GMT-0900 (Hawaii-Aleutian Daylight Time)