NavigationSplitView 无法使用具有关联类型的枚举



我有以下模型用于导航到各个页面:

enum Destination: Hashable {
case today
case activity
case settings(path: SettingsPath? = nil)
case project(project: ProjectItem? = nil)

enum SettingsPath: Hashable {
case cycles
case donations
}
}

在ObservableObject中,我使用

@Published var sidebarDestination: Destination? = .today

然后在各种NavigationLink按钮中,我使用以下初始值设定项-NavigationLink(value: NavigationModel.Destination.activity...

在NavigationSplitView的详细部分中,我使用了一个类似的开关

detail: {
if let destination = navigationModel.sidebarDestination {
switch destination {
case .today:
TodayView()
case .project(let project):
// FIXME: Why is the detail view not updating
if let selectedProject = project {
IOSProjectDetailView(project: selectedProject)
} else {
EmptyView()
}
...

我注意到带有关联值的枚举大小写的页面没有正确更新——页面上的标题会更新,但其他内容都不会更新。带有枚举大小写但没有关联类型的页面似乎工作得很好。

所有这些都是使用iPad-更大的屏幕尺寸

我尝试过iOS 16.0.1和iOS 16.1,但在那里也不起作用。

我需要更详细地查看您的代码。

"selected"变量显然是@Published var sidebarDestination:Destination?=。今天

这需要在列表定义中指定(例如,列表(选择:$navigationModel.sidebarDestination((。同样重要的是,类型匹配=它们出现在这里。

最新更新