1

我有一种状态叫做时间

@State var time = 0

和一个名为 timerWrapper 的 ObservedObject

@ObservedObject var timerWrapper = TimerWrapper()

可以从子视图更新时间,如果我使用它,我还希望能够使用 timerWrapper (theObservedObject) 更新它:

self.time = self.timerWrapper.remainingSeconds

并这样做:

Text($time)

文本不更新。只有当我这样做时它才有效:

Text(self.timerWrapper.remainingSeconds)

我知道那是因为当剩余秒数发布时,它会重新加载 UI。但我怎样才能解决这个问题?提醒我有 2 个可以更新时间的可能来源,这就是为什么我在视图构建器中创建文本时不直接使用观察对象的原因。

4

1 回答 1

1

如果您想更新视图模型发布属性的本地状态(无论出于何种原因),这是一种方法

Text(time)   // << not binding, just property
   .onReceive(timerWrapper.$remainingSeconds) { value in // listen for publisher $
      self.time = value
   }
于 2020-06-21T04:25:13.587 回答