Tal*_*ode 4 sprite-kit swift swiftui observedobject observableobject
我有一个由几个 SwiftUI 组件组成的图形用户界面(我们称它们为子视图)。这些子视图在 ObservableObject / ObservedObject 的帮助下相互通信。当一个视图发生更改时,另一个视图会自动收到通知并自行更新。
然而,其中一个子视图不是 SwiftUI 视图,而是 SpriteKit SKScene。在这里,我也想对观察值的变化做出反应。但我没有自动更新的视图。我想根据观察到的值对精灵进行调整。
我如何得知价值的变化?我可以在 ObservedObject 的值发生变化时立即调用方法吗?
Alb*_*tUI 10
从 UIKit 或 SKScene 中很容易观察 ObservedObject 的变化。下面的示例来自 UIViewController,将其更改为与 SKScene 等效:
\nimport Combine\n\nclass Object: ObservableObject {\xc2\xa0\n @Published var value: Int = 10\n @Published var anotherValue: String = "Hello"\n}\n\nclass MyViewController: UIViewController {\xc2\xa0\n\n let observedObject = Object()\n var cancellableBag = Set<AnyCancellable>()\n\n override func viewDidLoad() {\xc2\xa0\n super.viewDidLoad()\n\n // REACT TO ANY @PUBLISHED VARIABLE\n observedObject.objectWillChange.sink {\xc2\xa0\n // Do what you want here\n }.store(in: &cancellableBag)\n\n // REACT ONLY TO ONE SPECIFIED @PUBLISHED VARIABLE\n observedObject.$value.sink {\xc2\xa0value in\n // Do what you want here\n }.store(in: &cancellableBag)\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n请注意,这@Published是一个propertyWrapperwith projectedValue。在本projectedValue例中, 是Publisher, 每次wrappedValue更改时都会发出事件,因此为了访问 ,projectedValue有必要调用$value而不是value。
| 归档时间: |
|
| 查看次数: |
3277 次 |
| 最近记录: |