gpt4 book ai didi

view - SwiftUI 问题将变量传递给另一个 View

转载 作者:行者123 更新时间:2023-12-04 11:09:39 24 4
gpt4 key购买 nike

我想将 float 变量从一个 View 传递到另一个新 View 。

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

希望这是有道理的。

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

谢谢你。

克雷格

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属性包装器,它有一个关联的绑定(bind)。因此,您可以声明 @Binding变量,并使用绑定(bind)到原始变量来初始化它。

struct NextView : View {
@Binding var mhzValue: Float
...
}

当您指定 NextView 时作为导航按钮的目的地,将绑定(bind)传递给 mhzValue . (美元符号语法是引用绑定(bind)的一种简写方式。)
struct ContentView : View {
@State private var mhzValue : Float = 0
...
NavigationButton(destination: NextView(mhzValue: self.$mhzValue)){...}
...
}

然后您可以使用 mhzValueNextView :
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 .

关于view - SwiftUI 问题将变量传递给另一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56821737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com