使用 swiftUI 如何仅在 textField 处于编辑模式时添加 datePicker?
Using swiftUI how can i add datePicker only while textField is in editing mode?
我现在已经在 HStack
中添加了 datePicker。我只想在 textField
处于编辑模式时显示 datePicker
。
struct EditProfile: View {
@Binding var profile: Profile
var body: some View {
List {
HStack {
Text("Username").bold()
TextField("Date")
DatePicker(
$profile.goalDate,
minimumDate: Calendar.current.date(byAdding: .year, value: -1, to: profile.goalDate),
maximumDate: Calendar.current.date(byAdding: .year, value: 1, to: profile.goalDate),
displayedComponents: .date
)
}
}
.padding(.top)
}
.padding(.top)
}
您可以将 onEditingChanged
与绑定一起使用以获得所需的效果。
struct EditProfile : View {
@Binding var profile: Profile
@State var showDatePicker = false
@State var textfieldText: String = ""
var body: some View {
List {
HStack {
Text("Username").bold()
TextField($textfieldText, placeholder: Text("Date"), onEditingChanged: { (editting) in
self.showDatePicker = editting
}) {
}
if self.showDatePicker {
DatePicker(
$profile.goalDate,
minimumDate: Calendar.current.date(byAdding: .year, value: -1, to: profile.goalDate),
maximumDate: Calendar.current.date(byAdding: .year, value: 1, to: profile.goalDate),
displayedComponents: .date
)
}
}
}
.padding(.top)
}
}
我现在已经在 HStack
中添加了 datePicker。我只想在 textField
处于编辑模式时显示 datePicker
。
struct EditProfile: View {
@Binding var profile: Profile
var body: some View {
List {
HStack {
Text("Username").bold()
TextField("Date")
DatePicker(
$profile.goalDate,
minimumDate: Calendar.current.date(byAdding: .year, value: -1, to: profile.goalDate),
maximumDate: Calendar.current.date(byAdding: .year, value: 1, to: profile.goalDate),
displayedComponents: .date
)
}
}
.padding(.top)
}
.padding(.top)
}
您可以将 onEditingChanged
与绑定一起使用以获得所需的效果。
struct EditProfile : View {
@Binding var profile: Profile
@State var showDatePicker = false
@State var textfieldText: String = ""
var body: some View {
List {
HStack {
Text("Username").bold()
TextField($textfieldText, placeholder: Text("Date"), onEditingChanged: { (editting) in
self.showDatePicker = editting
}) {
}
if self.showDatePicker {
DatePicker(
$profile.goalDate,
minimumDate: Calendar.current.date(byAdding: .year, value: -1, to: profile.goalDate),
maximumDate: Calendar.current.date(byAdding: .year, value: 1, to: profile.goalDate),
displayedComponents: .date
)
}
}
}
.padding(.top)
}
}