Compose SwiftUIv0.4.0
esc
GuideAPIGitHub
View

Picker

A control that selects one value among several options.

iOS 17.0+macOS 14.0+tvOS 17.0+watchOS 10.0+
fun Picker(title: String, selection: Any, modifier: Modifier = Modifier, onSelectionChange: (Any) -> Unit, content: @Composable () -> Unit)

Overview

Each option is a child view tagged with its value through Modifier.tag. The selection is a value and a callback, like other bindings.

Picker("Sort", selection = sort, onSelectionChange = { sort = it as Sort }) {
    Text("Name", modifier = Modifier.tag(Sort.Name))
    Text("Date", modifier = Modifier.tag(Sort.Date))
}

This is the Kotlin form of SwiftUI Picker.init(_:selection:content:): SwiftUI documentation. In Swift it reads:

nonisolated init<S>(_ title: S, selection: Binding<SelectionValue>, @ContentBuilder content: () -> Content) where S : StringProtocol

Topics

Creating a Picker

fun Picker(selection: Any, modifier: Modifier = Modifier, onSelectionChange: (Any) -> Unit, content: @Composable () -> Unit, label: @Composable () -> Unit, currentValueLabel: @Composable () -> Unit)
SwiftUI Picker.init(selection:content:label:currentValueLabel:) · iOS 18.0+, macOS 15.0+, tvOS 18.0+, watchOS 11.0+
fun Picker(selection: Any, modifier: Modifier = Modifier, onSelectionChange: (Any) -> Unit, content: @Composable () -> Unit, label: @Composable () -> Unit)
SwiftUI Picker.init(selection:content:label:)
fun Picker(title: String, selection: Any, modifier: Modifier = Modifier, onSelectionChange: (Any) -> Unit, content: @Composable () -> Unit, currentValueLabel: @Composable () -> Unit)
SwiftUI Picker.init(_:selection:content:currentValueLabel:) · iOS 18.0+, macOS 15.0+, tvOS 18.0+, watchOS 11.0+
fun Picker(title: String, selection: Any, modifier: Modifier = Modifier, onSelectionChange: (Any) -> Unit, content: @Composable () -> Unit)
SwiftUI Picker.init(_:selection:content:)
fun Picker(title: String, systemImage: SFSymbol, selection: Any, modifier: Modifier = Modifier, onSelectionChange: (Any) -> Unit, content: @Composable () -> Unit, currentValueLabel: @Composable () -> Unit)
SwiftUI Picker.init(_:systemImage:selection:content:currentValueLabel:) · iOS 18.0+, macOS 15.0+, tvOS 18.0+, watchOS 11.0+
fun Picker(title: String, systemImage: SFSymbol, selection: Any, modifier: Modifier = Modifier, onSelectionChange: (Any) -> Unit, content: @Composable () -> Unit)
SwiftUI Picker.init(_:systemImage:selection:content:)
fun Picker(titleResource: LocalizedKey, selection: Any, modifier: Modifier = Modifier, onSelectionChange: (Any) -> Unit, content: @Composable () -> Unit, currentValueLabel: @Composable () -> Unit)
SwiftUI Picker.init(_:selection:content:currentValueLabel:) · iOS 18.0+, macOS 15.0+, tvOS 18.0+, watchOS 11.0+
fun Picker(titleResource: LocalizedKey, selection: Any, modifier: Modifier = Modifier, onSelectionChange: (Any) -> Unit, content: @Composable () -> Unit)
SwiftUI Picker.init(_:selection:content:)
fun Picker(titleResource: LocalizedKey, systemImage: SFSymbol, selection: Any, modifier: Modifier = Modifier, onSelectionChange: (Any) -> Unit, content: @Composable () -> Unit, currentValueLabel: @Composable () -> Unit)
SwiftUI Picker.init(_:systemImage:selection:content:currentValueLabel:) · iOS 18.0+, macOS 15.0+, tvOS 18.0+, watchOS 11.0+
fun Picker(titleResource: LocalizedKey, systemImage: SFSymbol, selection: Any, modifier: Modifier = Modifier, onSelectionChange: (Any) -> Unit, content: @Composable () -> Unit)
SwiftUI Picker.init(_:systemImage:selection:content:)
fun Picker(titleKey: LocalizedKey? = null, selection: Any? = null, systemImage: SFSymbol? = null, modifier: Modifier = Modifier, onSelectionChange: ((Any) -> Unit)? = null, currentValueLabel: (@Composable () -> Unit)? = null, content: (@Composable () -> Unit)? = null)
SwiftUI Picker · (e.g. Image(systemName = SFSymbol.star)).

Methods

fun PickerSelection(titleKey: LocalizedKey, selection: Any, modifier: Modifier = Modifier, onSelectionChange: (Any) -> Unit, content: @Composable () -> Unit, currentValueLabel: @Composable () -> Unit)
SwiftUI Picker.init(_:selection:content:currentValueLabel:) · iOS 18.0+, macOS 15.0+, tvOS 18.0+, watchOS 11.0+
fun PickerSelection(titleKey: LocalizedKey, selection: Any, modifier: Modifier = Modifier, onSelectionChange: (Any) -> Unit, content: @Composable () -> Unit)
SwiftUI Picker.init(_:selection:content:)
fun PickerSystemImage(titleKey: LocalizedKey, systemImage: SFSymbol, selection: Any, modifier: Modifier = Modifier, onSelectionChange: (Any) -> Unit, content: @Composable () -> Unit, currentValueLabel: @Composable () -> Unit)
SwiftUI Picker.init(_:systemImage:selection:content:currentValueLabel:) · iOS 18.0+, macOS 15.0+, tvOS 18.0+, watchOS 11.0+
fun PickerSystemImage(titleKey: LocalizedKey, systemImage: SFSymbol, selection: Any, modifier: Modifier = Modifier, onSelectionChange: (Any) -> Unit, content: @Composable () -> Unit)
SwiftUI Picker.init(_:systemImage:selection:content:)