在 SwiftUI 中使用 Map 时在视图更新期间获取修改状态

Posted

技术标签:

【中文标题】在 SwiftUI 中使用 Map 时在视图更新期间获取修改状态【英文标题】:Getting Modifying State During View Update When Using Map in SwiftUI 【发布时间】:2021-12-11 21:58:51 【问题描述】:

我有以下代码:

struct ContentView: View 
    
    @State private var defaultRegion: MKCoordinateRegion = MKCoordinateRegion(center: CLLocationCoordinate2D.init(latitude: 29.726819, longitude: -95.393692), latitudinalMeters: 100, longitudinalMeters: 100)
    
    var body: some View 
        
        Map(coordinateRegion: $defaultRegion)
            .padding()
            
    

每当我运行此代码时,我都会收到以下警告:

[SwiftUI] Modifying state during view update, this will cause undefined behavior.

我能做什么?

【问题讨论】:

【参考方案1】:

由于我不关心是否阅读该区域,我发现类似这样的内容会抑制警告。我把它留给知识渊博的人来确定它是否是正确的解决方案:

struct ContentView: View 

var defaultRegion: MKCoordinateRegion = MKCoordinateRegion(center: CLLocationCoordinate2D.init(latitude: 29.726819, longitude: -95.393692), latitudinalMeters: 100, longitudinalMeters: 100)

var body: some View 
    
    Map(coordinateRegion: Binding.constant(defaultRegion))
        .padding()
        

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于在 SwiftUI 中使用 Map 时在视图更新期间获取修改状态的主要内容,如果未能解决你的问题,请参考以下文章

在 SwiftUI 中从 Observable 视图模型初始化 Map

如何在 swiftUI 中选择项目时在选择器上添加操作?

Swiftui @EnvironmentObject 在视图中更新

在 SwiftUI 中使用 @State 属性包装器未更新视图

如何正确处理更新视图中的选取器(SwiftUI)

如何使用 SwiftUI 更新不同的视图?