Присваивание опубликованного значения ObservedState состоянию - PullRequest
1 голос
/ 20 июня 2020

У меня есть состояние с именем time

@State var time = 0

и ObservedObject с именем timerWrapper

@ObservedObject var timerWrapper = TimerWrapper()

время может быть обновлено из дочернего представления, и я также хочу иметь возможность обновлять его используя timerWrapper (theObservedObject), если я использую это:

self.time = self.timerWrapper.remainingSeconds

и сделаю следующее:

Text($time)

Текст не обновляется. Это сработает, только если я сделаю это:

Text(self.timerWrapper.remainingSeconds)

Я знаю, что это потому, что, когда будет опубликовано оставшееся время, оно перезагрузит пользовательский интерфейс. Но как я могу это обойти? Напоминание, у меня есть 2 возможных источника, которые могут обновлять время, поэтому я не использую наблюдаемый объект напрямую при создании текста в построителе представлений.

1 Ответ

1 голос
/ 21 июня 2020

Если вы хотите обновить локальное состояние в опубликованном свойстве модели представления (по какой-либо причине), вот способ сделать это

Text(time)   // << not binding, just property
   .onReceive(timerWrapper.$remainingSeconds) { value in // listen for publisher $
      self.time = value
   }
...