1
struct ViewName: View {
    @State private var selectedDay: Date = Date() {
        didSet {
            print("Old value was \(oldValue) and new date is \(self.selectedDay)")
        }
    }
    var body: some View {
        VStack {
            DatePicker(selection: $selectedDay, in: Date()..., displayedComponents: .date) { Text("") }
        }
    }
}

我的问题是,当我在 DatePicker 中设置 selectedDate 值时,为什么控制台没有打印任何内容?

4

1 回答 1

1

我的问题是,当我在 DatePicker 中设置 selectedDate 值时,为什么控制台没有打印任何内容?

目前didSet不适用于@State属性包装器。

这是一种对更改 DatePicker 选择产生副作用的方法

struct ViewName: View {
    @State private var selectedDay = Date()

    var body: some View {
        let dateBinding = Binding(
            get: { self.selectedDay },
            set: {
                print("Old value was \(self.selectedDay) and new date is \($0)")
                self.selectedDay = $0
            }
        )
        return VStack {
            DatePicker(selection: dateBinding, in: Date()..., displayedComponents: .date) { Text("") }
        }
    }
}
于 2020-06-15T03:21:55.657 回答