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