@Published не обновляет пользовательский интерфейс при изменении значения модели представления

В моем ViewController (UIHostingController) у меня есть viewModel (ссылочный тип), общий для ViewController и его rootView. А у viewModel есть одно свойство, которое обернуто как .

  1. При получении ответа на viewcontroller от вызова API.
  2. обновление viewModel полученными данными с сервера
  3. здесь после установки значения@Publishedон не обновляет пользовательский интерфейс

Код ViewController:

      final class DashboardSceneViewController: UIHostingController<DashboardSceneView> {
    var viewModel: DashboardSceneViewModel?
    func setVm(response : Model){
        viewModel.data = response. ///Here it should update DashboardSceneView But not updating
    }
}

ViewModel:

      protocol DashboardSceneViewModel   {
    var delegate: DashboardSceneViewDelegate? { get set }
    var homeJson : HomeModel? {get set}
}


class DefaultDashboardSceneViewModel: DashboardSceneViewModel{
    @Published var homeJson: Model?
}

Вид:

      //Not getting redrawn on change in @published property change
struct DashboardSceneView: View {
    var viewModel: DashboardSceneViewModel
    var body: some View {
        VStack {
            if viewModel.homeJson != nil {
                Text(viewModel.homeJson?.header ?? "")
            }
            Button("Tap"){
                print()
            }
        }
    }
}

0 ответов

Другие вопросы по тегам