xcode 为什么我的SwiftUI应用程序日期不在后台刷新?

bqujaahr  于 2023-03-19  发布在  Swift
关注(0)|答案(1)|浏览(111)

早上好。我在主视图的顶部显示了日期。它显示如下:2023年3月16日,星期四。我的代码是:

let meetingDate = Date()
  Text(meetingDate.formatted(date: .complete, time: .omitted))

问题是,如果应用程序一直在后台运行,第二天你在iPhone上向上滑动并选择它,日期就不会更新。我必须关闭应用程序,重新打开它才能更新。我不明白为什么。
我没有试过,因为我不知道该试什么。我在网上广泛搜索,但没有找到解决方案。谢谢。

uurv41yg

uurv41yg1#

基本上,这是因为您仅在初始化期间设置meetingDate,所以这就是为什么您必须硬关闭应用程序才能更新meetingDate。要解决您的问题,您可以将meetingDate设置为@State属性,并添加应用场景阶段更改侦听,并在scenePhase更改为active时在onChange处理程序内更新meetingDate

@Environment(\.scenePhase) private var scenePhase
@State private var meetingDate: Date = .init()

...

YourView {
  ...
}
.onChange(of: scenePhase) { phase in
    guard phase == .active else {
       return
    }
    meetingDate = Date()
}

相关问题