Передача данных из родительского VC в дочерний VC после получения ответа с использованием предметов

Java3D имеет различные формы векторных классов (Vector3d, Vector3f, Vector4d и т. д.). Java3D, конечно, несколько рискованно в наши дни, поскольку, похоже, он настроен на отказ.

1
задан George2456 19 March 2019 в 09:41
поделиться

1 ответ

Скажем, у вашего AViewModel есть поток данных, интересующих ваших детей:

protocol AViewModel {
    let importantDataStream: Observable<SomeData> { get }
}

А у вашего ParentVC есть ссылка на его модель вида:

var viewModel: AViewModel

Тогда Вы можете объявить протокол:

protocol ImportantDataListener {
    func subscribe(to stream: Observable<SomeData>)
}

И B, и C будут соответствовать этому протоколу.

Затем мы меняем объявление функции add(asChildViewController ...) следующим образом:

func add(asChildViewController viewController: UIViewController & ImportantDataListener) {
    // Add Child View as Subview
    containerView.addSubview(viewController.view)

    // Configure Child View
    viewController.view.frame = view.bounds
    viewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]

    // Passing stream
    viewController.subscribe(to: viewModel.importantDataStream)
}
0
ответ дан ManWithBear 19 March 2019 в 09:41
поделиться