View 将变量传递给另一个视图的SwiftUI问题

View 将变量传递给另一个视图的SwiftUI问题,view,swiftui,View,Swiftui,我想把一个Float变量从一个视图传递到另一个新视图 在下面的代码中,有一个名为mhzValue的浮点值,通过滑块设置,滑块更改该值,然后文本显示在视图中。。当用户点击导航按钮以显示新视图时,我希望能够获取mhzValue并将其显示在文本框中的新视图中,以及将其设置为另一个变量 希望这是有道理的 请参阅下面的一些示例代码 多谢各位 克雷格 这是很容易做到的。因为mhzValue用@State属性包装器标记,所以它有一个关联的绑定。因此,您可以在第二个视图中声明一个@Binding变量,并使用与原

我想把一个Float变量从一个视图传递到另一个新视图

在下面的代码中,有一个名为mhzValue的浮点值,通过滑块设置,滑块更改该值,然后文本显示在视图中。。当用户点击导航按钮以显示新视图时,我希望能够获取mhzValue并将其显示在文本框中的新视图中,以及将其设置为另一个变量

希望这是有道理的

请参阅下面的一些示例代码

多谢各位

克雷格

这是很容易做到的。因为
mhzValue
@State
属性包装器标记,所以它有一个关联的绑定。因此,您可以在第二个视图中声明一个
@Binding
变量,并使用与原始变量的绑定对其进行初始化

struct NextView : View {
    @Binding var mhzValue: Float
    ...
}
当您指定
NextView
作为导航按钮的目标时,将绑定传递给
mhzValue
。(美元符号语法是指绑定的简写方式。)

然后可以在
NextView
中使用
mhzValue

struct NextView : View {

    @Binding var mhzValue: Float

    var body: some View {
        VStack{
            Text("Display Slider Value Here:")
            Text("\(Int(mhzValue)) Value")
                .font(.title)
                .fontWeight(.semibold)
                .color(.blue)
        }
    }
}

NextView
中对
mhzValue
所做的任何更改实际上都是对
ContentView.mhzValue
的更改

我知道你已经宣布
ContentView
为“真理之源”,用苹果的术语来表示
mhzValue
。为什么设置为
专用
?这没有什么意义。如果删除它,并确保将
NextView
绑定到它,会发生什么?如果没有更多的上下文,您甚至可以将其设置为
@EnvironmentObject
。。。我已经和斯威夫特一起玩了几年了,在记忆方面仍然有问题。。。老年。。。感谢您的评论,非常感谢!!CraigGood回答。有一个问题。正如我在评论中指出的,
mhzValue
被标记为
private
。这有关系吗?(事实上,我很惊讶它在没有任何警告或错误的情况下构建。)这太棒了。。。非常感谢。正如我上面提到的,我记不住。。。我想我永远也抓不住它。。因此,我将依靠像你这样的人继续提供帮助。。谢谢你。。克雷格,谢谢你回答得好,我还有一个问题。。我们如何将“mhzValue”传递给第三视图?这在swiftUI中可能吗?
struct ContentView : View {
    @State private var mhzValue : Float = 0
    ...
    NavigationButton(destination: NextView(mhzValue: self.$mhzValue)){...}
    ...
}
struct NextView : View {

    @Binding var mhzValue: Float

    var body: some View {
        VStack{
            Text("Display Slider Value Here:")
            Text("\(Int(mhzValue)) Value")
                .font(.title)
                .fontWeight(.semibold)
                .color(.blue)
        }
    }
}