我想将Float变量从一个视图传递到另一个新视图。
在下面的代码中,有一个称为mhzValue的Float值,该值是通过Slider设置的,滑块会更改该值,然后Text将显示在视图中。当用户点击Navigation Button来显示新的视图,我希望能够使用mhzValue并将其显示在新视图的文本框中,并将其设置为另一个变量。
希望如此。
请在下面查看一些示例代码。
谢谢。
克雷格
import SwiftUI
struct ContentView : View {
@State private var mhzValue : Float = 0
var body: some View {
// Navigation View
NavigationView {
VStack{
Text("Test Value:")
.font(.headline)
.color(.blue)
.padding(.leading, -180.0)
//Get Slider Value
Slider(value: $mhzValue, from: 1, through: 55, by: 1)
.padding(.horizontal)
//Display Slider Value
Text("\(Int(mhzValue)) Value")
.font(.title)
.fontWeight(.semibold)
.color(.blue)
// Naviagtion Button and send value of mhzValue to new View
NavigationButton(destination: NextView()){
Image(systemName: "plus.square.fill")
.foregroundColor(.white)
.font(/*@START_MENU_TOKEN@*/.title/*@END_MENU_TOKEN@*/)
.frame(width: 150.0, height: 16.0)
.padding(15)
.background(Color.red)
.cornerRadius(10.0)
}
}
}
}
}
// New View to show Slider Value
struct NextView : View {
var body: some View {
Text("Display Slider Value Here:")
}
}
#if DEBUG
struct ContentView_Previews : PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
答案 0 :(得分:0)
这很容易通过Bindings完成。由于mhzValue
用@State
属性包装器进行了标记,因此它具有关联的绑定。因此,您可以在 second 视图中声明一个@Binding
变量,并使用绑定到原始变量对其进行初始化。
struct NextView : View {
@Binding var mhzValue: Float
...
}
当您将NextView
指定为导航按钮的目标位置时,将其绑定到mhzValue
。 (美元符号语法是引用绑定的一种简便方法。)
struct ContentView : View {
@State private var mhzValue : Float = 0
...
NavigationButton(destination: NextView(mhzValue: self.$mhzValue)){...}
...
}
然后您可以在mhzValue
内使用NextView
:
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)
}
}
}
您在mhzValue
中对NextView
所做的任何更改将实际上是对ContentView.mhzValue
的更改。