A SwiftUI
DatePicker
view for tvOS
Currently there is no native SwiftUI
DatePicker
for tvOS
. That's why I created this Swift package to fill the hole 😊
The API
mimics the one of the native SwiftUI
DatePicker
available for iOS
, macOS
and macCatalyst
.
Just add this Swift package as a dependency to your Package.swift
:
.package(url: "https://github.com/crelies/TVDatePicker.git", from: "0.1.0")
The following code snippet shows how to use the DatePicker
view
in your tvOS
application:
TVDatePicker(
_ titleKey: LocalizedStringKey,
selection: Binding<Date>,
minimumDate: Date,
displayedComponents: Components = .all,
calendar: Calendar = .current,
dateFormatter: DateFormatter = DateFormatters.defaultFormatter,
label: () -> Label
) // Available when Label conforms to View.
At first the view appears as a button with a horizontal stack containing the specified label
, a Text
view representing the current selection
date string and a disclosure indicator
Image
view. If you press the button a sheet with the actual date picker view appears. The following screenshot is an example:
The DatePicker
view is implemented by using multiple Picker
s with the SegmentedPickerStyle
inside a List
/ VStack
.
Each Picker
represents a date component like year
, month
or date
. Due to issues with the focus engine the implementation slightly differs for the supported tvOS versions 13.0
, 14.0
and > 14.0
. But I think that you can ignore this detail in most cases.
⚠️ TheDatePicker
was only tested with theGregorian calendar
.- The
year
component displays only10
years at a time (selected year +/- 5 years
with respect to the year of the specifiedminimum date
). ⚠️ Currently only theyear
component respects theminimum date
. On the contraryall months of a year
andall days of a month
are visible at all time.- Currently the
hourAndMinute
component always displays all24 hours
of a day. - The
hourAndMinute
component supports only steps by five for theminute
.