这个示例来自于 WWDC22 的视频 The SwiftUI cookbook for navigation。
创建一个 NavigationModel
以存储导航路径。
- 当视图出现时,如果存在,则使用 SceneStorage 的数据加载
NavigationModel
。 - 每当
NavigationModel
发生更改时,通过观察自定义的objectWillChangeSequence
计算属性将其数据表示保存在 SceneStorage 中。
最后一点让我感到好奇:为什么不使用 .onChange
修饰符呢?像这样:
.onChange(of: navModel.path) { _ in
data = navModel.jsonData
}
注意:`objectWillChangeSequence`属性的定义如下:
var objectWillChangeSequence: AsyncPublisher<Publishers.Buffer<ObservableObjectPublisher>> {
objectWillChange.buffer(size: 1, prefetch: .byRequest, whenFull: .dropOldest).values
}
.onChange
修饰符来解决这个问题? - parapote