小编Joh*_*hnH的帖子

SwiftUI:不允许从视图更新中发布更改,这将导致未定义的行为(当使用“ViewModel”方法时)

我读过许多关于此错误的问题,这些问题与取消工作表有关,但没有一个涉及 SwiftUI 的地图。以下代码会生成此错误。视图模型中没有任何内容被更新。我只是将一个区域的绑定传递到 Map 初始值设定项中。对区域使用本地状态变量不会出现错误。我正在运行 Xcode 14.0。如果我删除 @Published 属性包装器,则错误就会消失。因此,我对视图模型应如何通知视图该区域已更改(可能是由于位置更新)感到困惑。

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)
    }
}

Run Code Online (Sandbox Code Playgroud)

xcode mvvm swiftui

21
推荐指数
1
解决办法
7804
查看次数

标签 统计

mvvm ×1

swiftui ×1

xcode ×1