SwiftUI MacOS使用ObserveObject更新状态
我在SwiftUI Mac OS中有一个状态,它存储了我对导航视图的活动选择。一切都与导航视图一起工作 现在我创建了一个新的SwiftUI MacOS使用ObserveObject更新状态,swift,macos,swiftui,Swift,Macos,Swiftui,我在SwiftUI Mac OS中有一个状态,它存储了我对导航视图的活动选择。一切都与导航视图一起工作 现在我创建了一个新的类,它确认了可观察对象。在某些子视图中,我将对该对象进行更改。更改完成后,我的导航视图也会更新对象,这是据我所知的可观察对象的特征 我现在想要实现的是,可观察对象在我的导航视图中更改我的@状态 这是我在导航视图中的声明。UserData还存储一个int,更改时应将其设置为选择 @EnvironmentObject var userData: UserData @State
类
,它确认了可观察对象
。在某些子视图中,我将对该对象进行更改。更改完成后,我的导航视图也会更新对象,这是据我所知的可观察对象的特征
我现在想要实现的是,可观察对象在我的导航视图中更改我的@状态
这是我在导航视图中的声明。UserData还存储一个int
,更改时应将其设置为选择
@EnvironmentObject var userData: UserData
@State var selection: Int?
因此userData.active=2
,也应该设置selection=2
。我是否可以触发onChange事件
我正在使用@状态选择
作为导航链接中的绑定
NavigationLink(destination: SecondContentView(), tag: 0, selection: self.$selection)
{
第二种方法是将userData.active:Int
直接用作状态
。但是,我将选择
状态
作为绑定
传递,当将环境对象的变量
作为绑定传递时,它会给我一个错误,请尝试直接使用用户数据
,如
NavigationLink(destination: SecondContentView(), tag: 0,
selection: self.$userData.active)
谢谢我试错了。我把它改成@Published var active:Int?并且使用了您自己的。$userData.active并且它工作:)赞赏是否有必要将它声明为可选的。。我想要它无always@davidev,它在签名中声明为选择:Binding
,因此是必需的。谢谢。。然而,当我在选择中使用它时,它工作正常,但当窗口消失或单击导航链接时,活动变量设置为nil。My Int与导航的标记和选择一起工作。但是,如果我在推送完成后使用它,值是nil?为什么?