I am trying to get a @Binding:String value returned from a DatePickerView in SwiftUI.
Can anyone tell me where the formatting code should go?.. I have so far tried in .onAppear which generates an initial value but doesn't update (NS)... also tried in the body and .onDisappear .. but nothing gets returned ...
struct DateView: View {
@Binding var dateString: String
@State var selectedDate: Date = Date()
let formatter = DateFormatter()
var body: some View {
formatter.dateFormat = "d MMM y"
dateString = formatter.string(from: selectedDate)
print(self.dateString)
return DatePicker(selection: $selectedDate, displayedComponents: .date) {
Text("Select a date")
}.labelsHidden()
}
}
tried
struct DateView: View {
@Binding var dateString: String
@State var selectedDate: Date = Date()
let formatter = DateFormatter()
var body: some View {
DatePicker(selection: $selectedDate, displayedComponents: .date) {
Text("Select a date")
}.labelsHidden()
.onAppear(){
self.formatter.dateFormat = "d MMM y"
self.dateString = self.formatter.string(from: self.selectedDate)
print(self.dateString)
}
}
}
here is code.
struct ContentView: View {
@ObservedObject var value = SelectionChnage()
let formatter = DateFormatter()
var body: some View {
DatePicker(selection: $value.selection, displayedComponents: .date) {
Text("Select a date")
}.labelsHidden()
}
}
final class SelectionChnage: ObservableObject {
var selection: Date = Date() {
didSet {
date_formate(slectedate: selection)
}
}
}
func date_formate(slectedate: Date) {
let formatter = DateFormatter()
formatter.dateFormat = "d MMM y"
let dateString = formatter.string(from: slectedate)
print(dateString)
}