ios - SwiftUI onChange 修饰符如何工作?
问题描述
我动态填充了一个 SwiftUI 选择器。Picker 工作正常。我想触发或监听选择器更改事件。假设如果用户选择一个项目,我将打印该值。我的 iOS 部署目标是 14,我发现 iOS 有一个内置函数onChange来检测这种监听器。我使用了那个修饰符但没有工作。这是我的代码:
var body: some View {
Picker( selection: $selectedStrength, label: Text("Status")) {
ForEach(courseList, id: \.self) { item in
Text(item.courseCode ?? "")
}
}
.onChange(of:selectedStrength, perform: { _ in
print("Value Changed!")
})
.pickerStyle(WheelPickerStyle())
}
解决方案
我认为这是由于类型不匹配,Picker 选择类型和项目类型或(!)标签应该相同。一旦您按项目迭代但显示courseCode
这可能是错误的原因。
尝试类似(未测试,因为提供的代码不是独立的且不可运行)
Picker(selection: $selectedStrength, label: Text("Status")) {
ForEach(courseList, id: \.self) { item in
// assiming selectedStrength type and item.courseCode type is the same
Text(item.courseCode ?? "").tag(item.courseCode)
}
}
.onChange(of: selectedStrength, perform: { _ in
print("Value Changed!")
})
推荐阅读
- c# - .NET 核心 systemd 守护程序中的 FileSystemWatcher
- java - 使用 Infura 在 Java Android 中运行 IPFS 节点
- python - 使用大型嵌套 JSON 设置 sqlalchemy 模型和 Marshmallow
- python - 对象词在 Django 中自动分配给模型
- android - Android OpenGL:如何围绕世界轴旋转?
- hy - HyLang import_buffer_to_ast 删除版本 0.18.0
- c# - 如果数组有两个相同的条目,则在 C# 中从 char 数组转换为字符串的问题
- postgresql - 使用 Postgres + Firestore 实现 RBAC
- android - Android Studio:服务管理器的模拟器错误
- java - 如何解决库根依赖的gradle依赖冲突?