Java3D имеет различные формы векторных классов (Vector3d, Vector3f, Vector4d и т. д.). Java3D, конечно, несколько рискованно в наши дни, поскольку, похоже, он настроен на отказ.
Скажем, у вашего 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)
}