Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SwiftUI MacOS使用ObserveObject更新状态_Swift_Macos_Swiftui - Fatal编程技术网

SwiftUI MacOS使用ObserveObject更新状态

SwiftUI MacOS使用ObserveObject更新状态,swift,macos,swiftui,Swift,Macos,Swiftui,我在SwiftUI Mac OS中有一个状态,它存储了我对导航视图的活动选择。一切都与导航视图一起工作 现在我创建了一个新的类,它确认了可观察对象。在某些子视图中,我将对该对象进行更改。更改完成后,我的导航视图也会更新对象,这是据我所知的可观察对象的特征 我现在想要实现的是,可观察对象在我的导航视图中更改我的@状态 这是我在导航视图中的声明。UserData还存储一个int,更改时应将其设置为选择 @EnvironmentObject var userData: UserData @State

我在SwiftUI Mac OS中有一个状态,它存储了我对导航视图的活动选择。一切都与导航视图一起工作

现在我创建了一个新的
,它确认了
可观察对象
。在某些子视图中,我将对该对象进行更改。更改完成后,我的导航视图也会更新对象,这是据我所知的可观察对象的特征

我现在想要实现的是,可观察对象在我的导航视图中更改我的
@状态

这是我在导航视图中的声明。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?为什么?