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

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,则完全可以正常工作. 在我看来这像是个窃听器

编辑: 已解决-问题是在.tag()中需要完全相同的类型. 因此,.tag(1)应该是Int而不是Int32.因此需要.tag(Int32(1))

让它更令人困惑的是,这是可行的:

struct ExamplePicker: View {
    
    @Binding var val: Int64
    
    var body: some View {
        HStack {
            
            Picker(selection: $val, label: EmptyView()) {
                
                Text("Val1").tag(1)
                Text("Val2").tag(2)
                Text("Val3").tag(3)
            }
            .onChange(of: val) { newSelection in
                print(">>> HERE")
            }   
        }
    }
}

推荐答案

Picker个项目的tag个值与状态变量的类型相同时,它工作得很好.就像这样:

Picker(selection: $val, label: EmptyView()) {
    Text("Val1").tag(Int32(1))
    Text("Val2").tag(Int32(2))
    Text("Val3").tag(Int32(3))
}

Ios相关问答推荐

Xamarin Forms CustomPin iOS Render

Flutter 应用程序中带有Firebase的GoogleService-Info.plist中缺少CLIENT_ID、REVERSED_CLIENT_ID和ANDROID_CLIENT-ID

在flutter中使用flatter_screenutil这样的软件包的目的是什么?

objc[25442]:Swift类的扩展和类别不允许有+load方法

为什么AVSpeechSynthesizer复制的信息比我的文本多?

Swift Combine和iOS版本限制?

在 iOS 上启用明文本地流量在 .NET MAUI 中不起作用

如何将 -fobjc-arc-exceptions 标志正确添加到 XCode 中?

在 SwiftUI 中放置全局 NavigationPath 的位置

CoreML 不能并发(多线程)工作?

访问未定义的 stage_in 金属着色器参数

Xcode - 错误 ITMS-90635 - Bundle 包中的 Mach-O 无效 - 提交到 App Store

如何更新推送通知服务证书

针对 Xcode 中的 iPad 选项

'无效更新:第 0 节中的无效行数

是否可以将 Socket.io 与 AWS Lambda 一起使用?

如何使用完成按钮制作 UIPickerView?

UITextView 内容插图

我可以在 UIScrollView 中使用 UIRefreshControl 吗?

在自动布局中居中子视图的 X 会引发未准备好约束