早上好。我在主视图的顶部显示了日期。它显示如下:2023年3月16日,星期四。我的代码是:
let meetingDate = Date() Text(meetingDate.formatted(date: .complete, time: .omitted))
问题是,如果应用程序一直在后台运行,第二天你在iPhone上向上滑动并选择它,日期就不会更新。我必须关闭应用程序,重新打开它才能更新。我不明白为什么。我没有试过,因为我不知道该试什么。我在网上广泛搜索,但没有找到解决方案。谢谢。
uurv41yg1#
基本上,这是因为您仅在初始化期间设置meetingDate,所以这就是为什么您必须硬关闭应用程序才能更新meetingDate。要解决您的问题,您可以将meetingDate设置为@State属性,并添加应用场景阶段更改侦听,并在scenePhase更改为active时在onChange处理程序内更新meetingDate:
meetingDate
@State
scenePhase
active
onChange
@Environment(\.scenePhase) private var scenePhase @State private var meetingDate: Date = .init() ... YourView { ... } .onChange(of: scenePhase) { phase in guard phase == .active else { return } meetingDate = Date() }
1条答案
按热度按时间uurv41yg1#
基本上,这是因为您仅在初始化期间设置
meetingDate
,所以这就是为什么您必须硬关闭应用程序才能更新meetingDate
。要解决您的问题,您可以将meetingDate
设置为@State
属性,并添加应用场景阶段更改侦听,并在scenePhase
更改为active
时在onChange
处理程序内更新meetingDate
: