SwiftUI — выбор нескольких дат с помощью MultiDatePicker()
MultiDatePicker — это относительно новая функция, представленная Apple в iOS 14. Это представление SwiftUI, которое позволяет пользователю выбирать несколько дат одновременно. Это представление основано на представлении Datepicker, но оно было расширено и позволяет выбирать несколько дат, что делает его мощным инструментом для разработки приложений, требующих выбора даты.
Преимущества и реализация
Одним из основных преимуществ MultiDatePicker является простота использования. Представление реализуется с помощью одной строки кода и требует минимальной настройки. Чтобы использовать его, вы просто создаете экземпляр представления и привязываете его к частной переменной состояния типа Set‹DateComponents› с помощью оболочки свойства @State. Эта переменная будет содержать выбранные даты.
import SwiftUI struct ContentView: View { @State private var dates: Set<DateComponents> = [] var body: some View { VStack { MultiDatePicker("Select dates", selection: $dates) .frame(height: 300) Text("Selected dates: \(dates.count)") .font(.title) } .padding() } }
В этом примере мы создаем представление Multidatepicker с меткой «Выбрать даты» и привязываем выбор к переменной состояния дат. Затем мы отображаем количество выбранных дат, используя текстовое представление.
Вот результат:
Показать диапазон дат
Если мы хотим отобразить диапазон дат для пользователя, мы можем сделать это, добавив диапазон дат в настройку MultiDatePicker:
struct RangeDatePicker: View { @State private var selectedDates: Set<DateComponents> = [] @State private var startDate = Date() @State private var endDate = Date() var bounds: Range<Date> { return startDate..<endDate } var body: some View { VStack { Text("Selected Dates: \(selectedDates.count)") .font(.title) Spacer() DatePicker("Start Date", selection: $startDate, displayedComponents: [.date]) DatePicker("End Date", selection: $endDate, displayedComponents: [.date]) Spacer() MultiDatePicker("Select Dates", selection: $selectedDates, in: bounds) .frame(height: 300) Spacer() } .padding() } }
В этом примере мы создаем представление с двумя средствами выбора даты для выбора дат начала и окончания диапазона. Мы также создаем переменную границ, которая возвращает диапазон дат на основе двух созданных переменных.
Затем мы создаем представление Multidatepicker с меткой «Выбрать даты» и передаем ему диапазон дат, используя «in:» параметр. Мы привязываем выделение к переменной состояния selectedDates. Представление Multidatepicker позволяет выбирать даты только в указанном диапазоне.
Я добавил Spacer() для лучшей видимости в пользовательском интерфейсе.
Заключение
MultiDatePicker – это мощный инструмент для разработчиков iOS, позволяющий с легкостью выбирать несколько дат. При его использовании обязательно привяжите выбор к частной переменной состояния, используя оболочку свойства @State. Кроме того, не забудьте указать диапазон выбираемых дат, используя параметр диапазона, когда это необходимо.
В заключение, представление Multidatepicker является ценным дополнением к структуре SwiftUI, предоставляя простой и интуитивно понятный способ выбора нескольких дат. Благодаря простоте использования и гибкости он обязательно станет основным продуктом разработки приложений для iOS.