我已经读了一些关于这个错误的问题,涉及到解雇表,但是没有处理SwiftUI的Map。下面的代码生成了这个错误。视图模型中没有更新任何东西。我只是将绑定到一个区域的绑定传递到Map初始化器中。对区域使用本地状态变量没有错误。我运行的是Xcode 14.0。如果我删除@所以我对于视图模型应该如何通知视图区域已经改变感到困惑,也许是由于位置更新。
import SwiftUI
import MapKit
class MM : ObservableObject {
@Published var region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 51.507222, longitude: -0.1275), span: MKCoordinateSpan(latitudeDelta: 0.5, longitudeDelta: 0.5))
}
struct SimpleMap: View {
@ObservedObject var mm = MM()
@State private var region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 51.507222, longitude: -0.1275), span: MKCoordinateSpan(latitudeDelta: 0.5, longitudeDelta: 0.5))
var body: some View {
//Error
Map(coordinateRegion: $mm.region)
//No Error
//Map(coordinateRegion: $region)
}
}
字符串
1条答案
按热度按时间qaxu7uf21#
您需要将
@MainActor
属性添加到ViewModel,并将@ObervedObject
替换为@StateObject
。下面是一个如何实现它的例子:
字符串
这里最重要的是
@MainActor
属性。