SwiftUI - @Binding:来自 DatePickerView 的字符串

SwiftUI - @Binding:String from DatePickerView

我正在尝试获取从 SwiftUI 中的 DatePickerView 返回的 @Binding:String 值。

谁能告诉我格式化代码应该放在哪里?..到目前为止,我已经在 .onAppear 中尝试过,它会生成一个初始值但不会更新 (NS)...还在 body 和 .onDisappear 中尝试过.. 但没有返回任何内容 ...

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()
        }
    }

尝试过

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)
            }
        }
    }

这是代码。

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)

}