SwiftUI @State 变量
SwiftUI @State Variables
*我有这三个@State 变量:
@State var mhzValue : Float = 0
@State var mhzValueStep : Float = 0
@State var TotalFrequency : Float = 0
虽然它们 mhzValue 和 mhzValueStep 显示在我的应用程序中..
我想把它们加在一起..
示例:var TotalFrequency = mhzValue + mhzValueStep
但我就是无法让它工作..
请提出任何建议..我对此很陌生...谢谢!*
import SwiftUI
struct DipoleView : View {
@State var mhzValue : Float = 0
@State var mhzValueStep : Float = 0
@State var TotalFrequency : Float = 0
var body: some View {
VStack {
//Slider one
Text("Slide to select Frequency")
.font(.headline)
.color(.blue)
.padding(.leading, -130.0)
Slider(value: $mhzValue, from: 1, through: 55, by: 1)
.padding(.horizontal)
Text("\(Int(mhzValue)) in Mhz")
.font(.title)
.fontWeight(.semibold)
.color(.blue)
// Slider Two
Text("Slide to select Decimal Point")
.font(.headline)
.color(.orange)
.padding(.leading, -130.0)
Slider(value: $mhzValueStep, from: 1, through: 999, by: 0.1)
.padding(.horizontal)
Text(".\(Int(mhzValueStep)) in Mhz")
.font(.title)
.fontWeight(.semibold)
.color(.orange)
Text(" Frequency: \(Int(mhzValue)).\(Int(mhzValueStep)) Mhz")
.font(.largeTitle)
.fontWeight(.medium)
.color(.white)
.padding(10)
.background(/*@START_MENU_TOKEN@*/Color.blue/*@END_MENU_TOKEN@*/)
.cornerRadius(10.0)
.shadow(radius: /*@START_MENU_TOKEN@*/10/*@END_MENU_TOKEN@*/)
// Load Image View
Spacer()
ImageView()
.padding(.bottom, 40)
}
}
}
#if DEBUG
struct DipoleView_Previews : PreviewProvider {
static var previews: some View {
DipoleView()
}
}
#endif
您不需要将 TotalFrequency 声明为 State 变量,因为 mhzValue 和 mhzValueStep 都声明为 State var,您只需要这两者的总和。
相反,您可以将 TotalFrequency 声明为计算变量。这是代码的工作版本。
import SwiftUI
struct ContentView : View {
@State var mhzValue : Float = 0
@State var mhzValueStep : Float = 0
private var TotalFrequency : Float {
return mhzValue + mhzValueStep
}
var body: some View {
VStack {
//Slider one
Text("Slide to select Frequency")
.font(.headline)
.color(.blue)
.padding(.leading, -130.0)
Slider(value: $mhzValue, from: 1, through: 55, by: 1)
.padding(.horizontal)
Text("\(Int(mhzValue)) in Mhz")
.font(.title)
.fontWeight(.semibold)
.color(.blue)
// Slider Two
Text("Slide to select Decimal Point")
.font(.headline)
.color(.orange)
.padding(.leading, -130.0)
Slider(value: $mhzValueStep, from: 0, through: 1, by: 0.1)
.padding(.horizontal)
Text("\(mhzValueStep) in Mhz")
.font(.title)
.fontWeight(.semibold)
.color(.orange)
Text(" Frequency: \(TotalFrequency) Mhz")
.font(.largeTitle)
.fontWeight(.medium)
.color(.white)
.padding(10)
.background(/*@START_MENU_TOKEN@*/Color.blue/*@END_MENU_TOKEN@*/)
.cornerRadius(10.0)
.shadow(radius: /*@START_MENU_TOKEN@*/10/*@END_MENU_TOKEN@*/)
// Load Image View
Spacer()
// Image()
// .padding(.bottom, 40)
}
}
}
*我有这三个@State 变量:
@State var mhzValue : Float = 0
@State var mhzValueStep : Float = 0
@State var TotalFrequency : Float = 0
虽然它们 mhzValue 和 mhzValueStep 显示在我的应用程序中..
我想把它们加在一起..
示例:var TotalFrequency = mhzValue + mhzValueStep
但我就是无法让它工作..
请提出任何建议..我对此很陌生...谢谢!*
import SwiftUI
struct DipoleView : View {
@State var mhzValue : Float = 0
@State var mhzValueStep : Float = 0
@State var TotalFrequency : Float = 0
var body: some View {
VStack {
//Slider one
Text("Slide to select Frequency")
.font(.headline)
.color(.blue)
.padding(.leading, -130.0)
Slider(value: $mhzValue, from: 1, through: 55, by: 1)
.padding(.horizontal)
Text("\(Int(mhzValue)) in Mhz")
.font(.title)
.fontWeight(.semibold)
.color(.blue)
// Slider Two
Text("Slide to select Decimal Point")
.font(.headline)
.color(.orange)
.padding(.leading, -130.0)
Slider(value: $mhzValueStep, from: 1, through: 999, by: 0.1)
.padding(.horizontal)
Text(".\(Int(mhzValueStep)) in Mhz")
.font(.title)
.fontWeight(.semibold)
.color(.orange)
Text(" Frequency: \(Int(mhzValue)).\(Int(mhzValueStep)) Mhz")
.font(.largeTitle)
.fontWeight(.medium)
.color(.white)
.padding(10)
.background(/*@START_MENU_TOKEN@*/Color.blue/*@END_MENU_TOKEN@*/)
.cornerRadius(10.0)
.shadow(radius: /*@START_MENU_TOKEN@*/10/*@END_MENU_TOKEN@*/)
// Load Image View
Spacer()
ImageView()
.padding(.bottom, 40)
}
}
}
#if DEBUG
struct DipoleView_Previews : PreviewProvider {
static var previews: some View {
DipoleView()
}
}
#endif
您不需要将 TotalFrequency 声明为 State 变量,因为 mhzValue 和 mhzValueStep 都声明为 State var,您只需要这两者的总和。 相反,您可以将 TotalFrequency 声明为计算变量。这是代码的工作版本。
import SwiftUI
struct ContentView : View {
@State var mhzValue : Float = 0
@State var mhzValueStep : Float = 0
private var TotalFrequency : Float {
return mhzValue + mhzValueStep
}
var body: some View {
VStack {
//Slider one
Text("Slide to select Frequency")
.font(.headline)
.color(.blue)
.padding(.leading, -130.0)
Slider(value: $mhzValue, from: 1, through: 55, by: 1)
.padding(.horizontal)
Text("\(Int(mhzValue)) in Mhz")
.font(.title)
.fontWeight(.semibold)
.color(.blue)
// Slider Two
Text("Slide to select Decimal Point")
.font(.headline)
.color(.orange)
.padding(.leading, -130.0)
Slider(value: $mhzValueStep, from: 0, through: 1, by: 0.1)
.padding(.horizontal)
Text("\(mhzValueStep) in Mhz")
.font(.title)
.fontWeight(.semibold)
.color(.orange)
Text(" Frequency: \(TotalFrequency) Mhz")
.font(.largeTitle)
.fontWeight(.medium)
.color(.white)
.padding(10)
.background(/*@START_MENU_TOKEN@*/Color.blue/*@END_MENU_TOKEN@*/)
.cornerRadius(10.0)
.shadow(radius: /*@START_MENU_TOKEN@*/10/*@END_MENU_TOKEN@*/)
// Load Image View
Spacer()
// Image()
// .padding(.bottom, 40)
}
}
}