【发布时间】:2020-06-20 19:33:12
【问题描述】:
我有一个叫做时间的状态
@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 个可能的来源可以更新时间,这就是为什么我在视图构建器中创建文本时不直接使用观察对象。
【问题讨论】:
-
决定谁“拥有”这些数据。并更新相同的来源。有没有理由不能将
self.$timeWrapper.remainingSeconds绑定传递给子视图?为什么需要@State var time? -
@NewDev 是的,它有效!嗯......但想知道这是否是最好的方法
-
如果你有外部的东西可以改变状态,最好使用视图模型,即
ObservedObject作为视图的真实来源。
标签: swiftui state observableobject observedobject