swift 带有iOS17观察的NavigationModel

vnjpjtjt  于 2023-06-21  发布在  Swift
关注(0)|答案(1)|浏览(152)

我正在尝试使用新的@Observable,并且在如何使属性在环境对象内部可绑定的情况下陷入困境。
因此,在应用程序中,我以编程方式设置导航,就像苹果建议的“Robust Navigation”一样。
NavigationModel作为environmentObject注入,属性columnVisibility是同一模型的一部分,并作为绑定属性传递给NavigationSplitview。

final class NavigationModel: ObservableObject, Codable {
    @Published var selectedCategory: Category?
    @Published var recipePath: [Recipe]
    @Published var columnVisibility: NavigationSplitViewVisibility
    }

 NavigationSplitView(
        columnVisibility: $navigationModel.columnVisibility
    )

使用观察宏

@Observable
final class NavigationModel {
 var columnVisibility: NavigationSplitViewVisibility = .automatic 
}

当尝试执行相同操作时,它会失败

我是不是漏掉了什么
我能想到的一个解决方案是将columnVisibility移动到其他类,并使用宏或在同一视图中定义属性使其成为Observable。

lx0bsm1f

lx0bsm1f1#

你错过了转换为@Bindable

@Bindable var navigationModel = navigationModel
NavigationSplitView(columnVisibility: $navigationModel.columnVisibility)

如果使用@State结构体而不是类,就不需要这个。

相关问题