如何从我的 ObservableObject 类调用我的 View 结构中的方法
Posted
技术标签:
【中文标题】如何从我的 ObservableObject 类调用我的 View 结构中的方法【英文标题】:How to call a method in my View struct from my ObservableObject class 【发布时间】:2020-10-13 22:47:02 【问题描述】:我正在为我的 Picker 选择使用 @ObservedObject PropertyWrapper,并且我想在选择更改时在我的 View 结构中调用一个方法。我该怎么做?
ObservableObject 代码:
class SphereModel: ObservableObject
@Published var selection = -3
didSet
// Call method (getAD()) here
查看代码:
struct ContentView: View
@ObservedObject var sphereModel = SphereModel()
var body: some View
Picker("Sphere Thickness", selection: $sphereModel.selection)
ForEach((-24..<1).reversed(), id: \.self)
Text(String(format: "%.1f", Double($0) / 2)).tag($0)
// Method to call
func getAD()
我该怎么做? 谢谢!
【问题讨论】:
【参考方案1】:您可以在视图中直接使用onReceive
:
class SphereModel: ObservableObject
@Published var selection = -3
struct ContentView: View
@ObservedObject var sphereModel = SphereModel()
var body: some View
Picker("Sphere Thickness", selection: $sphereModel.selection)
ForEach((-24 ..< 1).reversed(), id: \.self)
Text(String(format: "%.1f", Double($0) / 2)).tag($0)
.onReceive(sphereModel.$selection) selection in
print(selection)
getAD()
func getAD()
print("getAD")
【讨论】:
您可以直接收听已发布的发布者,而不是通过Just
发布者:.onReceive(sphereModel.$selection) ...
以上是关于如何从我的 ObservableObject 类调用我的 View 结构中的方法的主要内容,如果未能解决你的问题,请参考以下文章
如何强制 AutoClosable 警告传播到 Java 中的类调用者?
如何使用 ObservableObject 更新 UIViewRepresentable
SwiftUI:如何使用位置管理器类的已发布属性更新一个类(ObservableObject)的已发布属性?