我在视图中创建了一个 ObservableObject。
@ObservedObject var selectionModel = FilterSelectionModel()
FilterSelectionModel
我在's函数中放置了一个断点init
,它被多次调用。因为这个 View 是 a 的一部分NavigationLink
,所以我知道它是在随后创建的,并且与它一起创建了 selectionModel。当我导航到视图时,将再次创建 selectionModel。
在同一个视图中,我有一个“子视图”,我将 selectionModel 作为一个传递,EnvironmentObject
以便子视图可以更改它。
AddFilterScreen().environmentObject(self.selectionModel)
当子视图被关闭时,selectionModel 再次被创建,对它所做的更改也消失了。
有趣的注意事项:在最顶层是一个NavigationView
. 如果我添加
.navigationViewStyle(StackNavigationViewStyle())
对此NavigationView
,我的 selectionModel 的更改消失了。但是,如果我不添加navigationStyle
,则在子视图中所做的 selectionModel 更改仍然存在!(但我不想要拆分导航视图,我想要堆叠导航视图)
在这两种情况下 - 无论有没有navigationStyle
, selectionModel 都会被创建多次。我无法理解这些应该如何可靠地工作。