当我在 SwiftUI 中使用 EnvironmentObject 时,选择器正在弹回
Posted
技术标签:
【中文标题】当我在 SwiftUI 中使用 EnvironmentObject 时,选择器正在弹回【英文标题】:Picker is springing back when I use an EnvironmentObject in SwiftUI 【发布时间】:2020-01-17 08:14:46 【问题描述】:我创建了一个安静简单的 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,但它有同样的问题
【问题讨论】:
【参考方案1】:选择应该是数组的一项,而不是完整的数组,如下
@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()
【讨论】:
以上是关于当我在 SwiftUI 中使用 EnvironmentObject 时,选择器正在弹回的主要内容,如果未能解决你的问题,请参考以下文章
为啥当我在 UIHostingController 中使用 SwiftUI-transition 时,它不能按预期工作?
SwiftUI:Gesture var 是不是可能移入 EnvironmentObject?