environment-variables - 当我在 SwiftUI 中使用 EnvironmentObject 时,选择器正在弹回
问题描述
我创建了一个安静的简单 Picker 并希望使用 EnvironmentObject 作为数据源,但是当我使用它时,Picker 总是弹回默认值。
class HobbiesOfUser: ObservableObject {
@Published var hobbies = ["Swimming", "Football", "Hockey", "Rugby", "Other"]}
struct ContentView: View {
@EnvironmentObject var hobbiesOfUser: HobbiesOfUser
// @State var hobbiesOfUser = ["Swimming", "Football", "Hockey", "Rugby", "Other"]
var body: some View {
Picker(selection: $hobbiesOfUser.hobbies, label: Text("")) {
ForEach(0 ..< hobbiesOfUser.hobbies.count) {
Text(self.hobbiesOfUser.hobbies[$0]).tag($0)
}.labelsHidden()
}
}
}
我试图选择另一种形式的 Picker,但它有同样的问题
解决方案
选择应该是数组的一项,而不是完整的数组,如下所示
@EnvironmentObject var hobbiesOfUser: HobbiesOfUser
@State private var selected = "Swimming"
var body: some View {
Picker(selection: $selected, label: Text("")) {
ForEach(0 ..< hobbiesOfUser.hobbies.count) {
Text(self.hobbiesOfUser.hobbies[$0]).tag($0)
}.labelsHidden()
}
}
推荐阅读
- java - Java 8:将流中的值分配给变量?
- reduce - 如何删除带有属性重复 rethinkdb 的项目
- reactjs - 如何在反应应用程序中设置锚标记的样式
- optimization - Nsight Compute 中使用的术语
- javascript - Electron:如何防止 Cmd + Q 退出?
- swift - 在swift UI中点击按钮时如何更改背景颜色和图像?
- r - 使用R从具有相同格式的多页pdf文件中提取特定的结构化数据
- c# - 如何访问另一个用户控件实例中的用户控件实例?
- swift - 如何在 Swift 中将可转换属性保存到 Core Data
- python - 登录网站后漂亮的刮汤桌