view - 将变量传递给另一个视图的 SwiftUI 问题
问题描述
我想将浮点变量从一个视图传递到另一个新视图。
在下面的代码中有一个名为 mhzValue 的浮点值,它是通过滑块设置的,滑块会更改值,然后文本会显示在视图中。当用户点击导航按钮以显示新视图时,我希望能够获取 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
解决方案
这很容易通过Bindings完成。因为mhzValue
是用@State
属性包装器标记的,所以它有一个关联的Binding。因此,您可以在第二个视图中声明一个@Binding
变量,并使用 Binding 将其初始化为原始变量。
struct NextView : View {
@Binding var mhzValue: Float
...
}
当您指定NextView
导航按钮的目的地时,将其传递给 Binding to 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)
}
}
}
您对 inside 所做的任何更改都mhzValue
将NextView
有效地更改为ContentView.mhzValue
.
推荐阅读
- javascript - Javascript将时间戳值过滤为聚合值
- windows - Does windows stop services gracefully or kills them when an error (memory overflow, etc) occurs?
- javascript - 即使我在 React App localhost 中滚动,window.pageYOffset 为何总是为 0?
- go - 从共享 smb 文件夹 golang 解压
- r - 二元变量的散点图 (ggplot)
- xml - 在 c# 中反序列化时,selfclosed xml 标记引发错误
- excel - 在excel/vba中查找匹配数据并返回多行数据
- c - 不确定我是否正确使用 exec 传递给另一个程序
- python - 函数可以在没有定义参数的情况下工作吗?
- react-native - TouchableOpacity 的 onPress 不起作用