【发布时间】:2021-10-14 17:46:33
【问题描述】:
我正在开发 SwiftUI 并使用 UIViewRepresentable 显示 MapView。 现在,当加载地图时,我正在计算两点之间的路线,并将该路线存储在模型中。
class MapInfo: ObservableObject {
@Published var routeArray: [RouteArray] = []
}
我在 UIViewRepresentable MapCoordinator 中调用了 calculateRoute() 函数
struct MapView: UIViewRepresentable {
@StateObject var mapInfo = MapInfo()
}
func requestRoute() {
// when response is received
parentView.mapView.mapInfo.routeArray = responseArray
}
但我的问题是 SwiftUI View onReceive 在 MapInfo @Published RouteArray 更新时没有被调用。
我已经添加了我的代码。
struct MapContainerView: View {
@ObservedObject var mapInfoObj = MapInfo()
var body: some View {
ZStack {
MapView()
}.onReceive(mapInfoObj.$routeArray) { updatedRouteArray in
print(updatedRouteArray)
}
}
}
对此的任何帮助都非常感谢。 谢谢你:)
【问题讨论】:
-
您有两个不同的
MapInfo实例。您需要通过其初始化程序将MapContainerView中的那个传递给您的MapView。 -
是的,你是对的@Paulw11。我的错!!我错过了这个基本的东西。谢谢你:)
标签: ios swiftui uiviewrepresentable