【问题标题】:SwiftUI @State VariablesSwiftUI @State 变量
【发布时间】:2019-11-10 00:38:10
【问题描述】:

*我有这三个@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

【问题讨论】:

  • 很抱歉文本的格式很糟糕。
  • 没什么好担心的,格式看起来不错!

标签: swiftui


【解决方案1】:

您不需要将 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)

        }
    }
}

【讨论】:

  • 非常感谢...这行得通...现在我可以继续前进了....我已经使用 Xcode 和 Swift 玩了几年并继续打砖块墙壁..像你这样的人非常乐于助人,我真的很感激..我已经 60 多岁了,现在很难记住...再次感谢您!
猜你喜欢
  • 1970-01-01
  • 2021-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-07
  • 2021-10-05
  • 2020-04-10
  • 1970-01-01
相关资源
最近更新 更多