swift 我可以在UIDatePicker上检测月份变化吗?

6yjfywim  于 2023-06-21  发布在  Swift
关注(0)|答案(2)|浏览(102)

我有一个内嵌样式的UIDatePicker(显示为日历)。我有一个端点,在那里我可以获得一个月的可用日期,所以我想检测显示的月份何时更改。我已经尝试了各种方法,甚至为.allEvents事件添加了一个目标,但似乎没有什么能触发它。
有办法做到吗?

y3bcpkx1

y3bcpkx11#

您应该将IBAction附加到选择器的valueChanged事件。
(You可以在Interface Builder中完成,也可以在选择器上调用addTarget(_:action:for:)。)
该操作将在用户更改日期的任何部分时被调用。然后,您需要跟踪上一个日期并自己检测月份的变化。

w46czmvw

w46czmvw2#

如果你使用的是视图模型,你可以很容易地通过以下方式处理:
在下面的游戏中运行,看看我的意思:

final class ViewModel {

    var selectedDateChanged: ((Date) -> Void)?

    var selectedDate: Date {
        didSet {
            selectedDateChanged?(selectedDate)
        }
    }

    init(selectedDate: Date = .now) {
        self.selectedDate = selectedDate
    }
}

let viewModel = ViewModel()
viewModel.selectedDateChanged = { date in
    // now you have the fact that it changed
    // and the new value to use, checking the month
    print(date)
}

viewModel.selectedDate = .now

相关问题