#swift #swiftui
Вопрос:
Добрый день, сообщество,
Я хотел бы знать, есть ли какой-либо способ узнать, какой день был нажат в датапикере в swiftui, так как я хочу знать, какой день нажал пользователь, и иметь возможность сохранить его в переменной?
DatePicker("My calendar", selection: $startDate,in:Date()..., displayedComponents: .date)
.accentColor(.Teal)
.background(
RoundedRectangle(cornerRadius: 30)
.stroke(Color.Teal, lineWidth: 3)
)
.labelsHidden()
.environment(.colorScheme, .dark)
.datePickerStyle(GraphicalDatePickerStyle())
.padding()
}
Как на фотографии, как я могу узнать, что пользователь нажал на 12 или 13 день, есть ли делегат, который должен знать об этом в swiftui?
Ответ №1:
Вы можете использовать onChange(of:perform:)
модификатор для обнаружения изменений в выбранной дате:
.onChange(of: startDate) { newDate in
print("selected date: (newDate)")
let day = Calendar.current.dateComponents([.day], from: newDate).day!
print("day: (day)")
}
Примеры отпечатков:
выбранная дата: 2021-08-20 21:59:00 0000
день: 20
Ответ №2:
Вы определили дату начала $для выбора. Вам нужна переменная состояния с именем StartDate для хранения выбранной даты.
Для получения полного объяснения перейдите по этой ссылке: https://www.hackingwithswift.com/quick-start/swiftui/how-to-create-a-date-picker-and-read-values-from-it
Редактировать: И, как упоминал @George, если вы хотите обнаружить изменение переменной состояния, используйте модификатор onChange(of:perform:).