【问题标题】:Adding MapUserTrackingMode causes issues with initialization添加 MapUserTrackingMode 会导致初始化问题
【发布时间】:2022-11-21 04:50:23
【问题描述】:

我有以下代码,我刚刚添加了跟踪模式。

struct LocationInfoView: View {

  @State var location: CLLocationCoordinate2D
  @State private var mapRegion: MKCoordinateRegion
  @State private var trackingMode = MapUserTrackingMode.follow
  let markers: [Marker]

  init(location: CLLocationCoordinate2D) {
    self.location = location
    mapRegion = MKCoordinateRegion(center: location, span: MKCoordinateSpan(latitudeDelta: 0.00625, longitudeDelta: 0.00625))
    markers = [Marker(location: MapPin(coordinate: location))]
  }

  var body: some View {
    Map(
      coordinateRegion: $mapRegion,
      showsUserLocation: true,
      userTrackingMode: $trackingMode,
      annotationItems: markers) { marker in
        marker.location
      }
      .edgesIgnoringSafeArea(.bottom)
  }
}

struct Marker: Identifiable {
  let id = UUID()
  var location: MapPin
}

当我添加 MapUserTrackingMode 时,我得到 Variable 'self.location' used before being initializedVariable 'self.mapRegion' used before being initialized 错误。我不明白为什么添加跟踪模式会导致初始化出现问题。

【问题讨论】:

    标签: ios swift swiftui


    【解决方案1】:

    你得到的错误并不是特别有用,而且你在添加 trackingMode 之前所做的事情一开始就不应该真正起作用,这让你更加困惑。

    问题是,如果您要在 View init 中初始化 @State 变量,则必须使用 _myVar = State(...) 语法:

    @State var location: CLLocationCoordinate2D
    @State private var mapRegion: MKCoordinateRegion
    @State private var trackingMode = MapUserTrackingMode.follow
    let markers: [Marker]
    
    init(location: CLLocationCoordinate2D) {
      _location = State(initialValue: location)
      _mapRegion = State(initialValue: MKCoordinateRegion(center: location, span: MKCoordinateSpan(latitudeDelta: 0.00625, longitudeDelta: 0.00625)))
      markers = [Marker(location: MapPin(coordinate: location))]
    }
    

    相关见:SwiftUI @State var initialization issue

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-26
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      • 2021-10-08
      • 2013-08-07
      相关资源
      最近更新 更多