joe*_*ern 7 datepicker ios swiftui
我希望用户通过呈现 SwiftUI DatePicker来选择过去的日期。日期绑定设置为今天的日期。
现在,我希望用户能够选择今天的日期。但是,当用户点击已选择的日期时,DatePicker 不会消失。仅当用户点击尚未选择的日期时,它才会被关闭。因此,就我而言,我想在用户点击 13 时关闭 DatePicker。
当用户点击预先选择的日期时,有没有办法关闭 DatePicker?
以下是我使用 DatePicker 的方法:
struct DatePickerView: View {
@Binding var date: Date
var body: some View {
DatePicker(
"Select Date",
selection: $date,
in: ...Date(),
displayedComponents: [.date]
)
.datePickerStyle(.graphical)
.background(Color.white)
.cornerRadius(8)
.padding(.horizontal, 40)
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个类似的问题,并把一个.graphical
DatePicker
放在我自己的popover
。唯一的缺点是 iPhone 弹出窗口目前显示为表格,这是一个恼人的不一致之处。现在,您可以按照自己喜欢的方式控制弹出窗口演示,甚至可以进行取消/完成操作。
struct DatePickerPopover: View {
@State var showingPicker = false
@State var oldDate = Date()
@Binding var date: Date
let doneAction: () -> ()
var body: some View {
Text(date, format:.dateTime.year())
.foregroundColor(.accentColor)
.onTapGesture {
showingPicker.toggle()
}
.popover(isPresented: $showingPicker, attachmentAnchor: .point(.center)) {
NavigationStack {
DatePicker(selection: $date
, displayedComponents: [.date]){
}
.datePickerStyle(.graphical)
.toolbar {
ToolbarItem(placement: .cancellationAction) {
Button("Cancel") {
date = oldDate
showingPicker = false
}
}
ToolbarItem(placement: .confirmationAction) {
Button("Done") {
doneAction()
showingPicker = false
}
}
}
}
}
.onAppear {
oldDate = date
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2629 次 |
最近记录: |