带有菜单的选取器不适用于 Int32,但可以用于 Int

问题描述 投票:0回答:1

此代码不起作用,这意味着 onChange 永远不会被调用,并且当选择下拉选项时变量不会更改。

struct ExamplePicker: View {
    
    @State var val: Int32 = 2
    
    var body: some View {
        HStack {
            
            Menu {
                
                Picker(selection: $val, label: EmptyView()) {
                    
                    Text("Val1").tag(1)
                    Text("Val2").tag(2)
                    Text("Val3").tag(3)
                }
                
                
            } label: {
                HStack {
                    Text("Value: ")
                    Spacer()
                    
                    Text(String(format: "%d", val))
                    
                    Spacer()
                }
                
            }
            .onChange(of: val) { newSelection in
               print(">>> HERE")
           }
            
            
        }
        
    }
}

但是如果你将 val 更改为类型 Int 它工作得很好。 Int64 也可以正常工作。 这对我来说看起来像是一个错误

ios xcode swiftui menu picker
1个回答
0
投票

tag
项的
Picker
值与状态变量具有相同类型时,它可以正常工作。像这样:

Picker(selection: $val, label: EmptyView()) {
    Text("Val1").tag(Int32(1))
    Text("Val2").tag(Int32(2))
    Text("Val3").tag(Int32(3))
}
© www.soinside.com 2019 - 2024. All rights reserved.