SwiftUI:绑定@State 值的总和

问题描述

我尝试使用滑块计算三个数字的总和,滑块编号的任何更改都会自动更改计算值滑块上的值。我添加了一些绑定数字总和的问题。也许我错过了一个属性。 我只是盯着 Swift

有什么解决办法吗?

非常感谢

弗雷德

import SwiftUI

struct ContentView: View {
@State private var number1 = 0
@State private var number2 = 0
@State private var number3 = 0
@State private var computedValue = 0


    var body: some View {
        vstack {
         Text("Number 1")
             Picker("Number 1",selection: $number1,content: {
                 Text("0").tag(0)
                 Text("1").tag(1)
                 Text("2").tag(2)
                 Text("3").tag(3)
             }
             ).pickerStyle(SegmentedPickerStyle())
            
            Text("Number 2")
                Picker("Number 2",selection: $number2,content: {
                    Text("0").tag(0)
                    Text("1").tag(1)
                    Text("2").tag(2)
                    Text("3").tag(3)
                }
                ).pickerStyle(SegmentedPickerStyle())
            
            Text("Number 3")
                Picker("Number 3",selection: $number3,content: {
                    Text("0").tag(0)
                    Text("1").tag(1)
                    Text("2").tag(2)
                    Text("3").tag(3)
                }
                ).pickerStyle(SegmentedPickerStyle())
            
            Text("Computed value")
           
            Picker("computed",selection: sum(n1: number1,n2: number2,n3: number3),content: {
                Text("0").tag(0)
                Text("1").tag(1)
                Text("2").tag(2)
                Text("3").tag(3)
                Text("4").tag(4)
                Text("5").tag(5)
                Text("6").tag(6)
                Text("7").tag(7)
                Text("8").tag(8)
                Text("9").tag(9)


            }
            ).pickerStyle(SegmentedPickerStyle())
        }
    }
}



struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

func sum (n1: Int,n2: Int,n3: Int) -> Int {
    
    return n1 + n2 + n3
}

解决方法

使用.constant

Picker("computed",selection: Binding.constant(sum(n1: number1,n2: number2,n3: number3)),content: { // < - Here