0

我正在尝试在 SwiftUI 视图初始化程序中引用环境对象来设置状态值,但出现错误'self' used before all stored properties are initialized。有没有办法做到这一点,因为您需要引用 self 来访问环境对象?我觉得引用继承的值是你应该能够在视图的构造中做的事情。

struct Example: View {
 
  @EnvironmentObject var object: Items
  @State var ints: Array<Int>
  
  init() {
    self._ints = State(initialValue: Array(repeating: 0, count: self.object.items.count))
  }
}
4

1 回答 1

0

环境对象是初始化之后注入的,所以我们应该稍后更新状态,最常用的是onAppear

struct Example: View {
 
  @EnvironmentObject var object: Items
  @State var ints = Array<Int>()         // << just empty
  
  var body: some View {
    Text("Some view here")
     .onAppear {
        self.ints = Array(repeating: 0, count: self.object.items.count)
     }
  }
}

作为替代,它可以通过与https://stackoverflow.com/a/59368169/12299030中相同的方法使用子视图

于 2020-11-24T17:10:43.337 回答