如何在Swift中将MapView添加到另一个View?

我的应用程序中有2个标签。在第一个上,我显示一个View(这是myView,一个自定义结构),在第二个上,我想显示一个MapView。我找到了几本教程,展示了如何通过Storyboard添加MapView,但是我不知道如何最终将其显示在我的一个标签中。选项卡创建如下:

struct ContentView: View {
    @State private var selection = 0

    var body: some View {
        TabView(selection: $selection){
            myView()
                .font(.title)
                .tabItem {
                    VStack {
                        Image(systemName: "list.dash")
                        Text("Events")
                    }
                }
                .tag(0)
            Text("MAP")//here I want the MapView
                .tabItem {
                    VStack {
                        Image(systemName: "map")
                        Text("Map")
                    }
                }
                .tag(1)
        }
    }
}

我要插入地图,而不是现在放置的“ Text(“ MAP”)“。

hailang_163 回答:如何在Swift中将MapView添加到另一个View?

您可以使用SwiftUI中UIKit(或本例中的MapKit)以前支持的任何视图,只需提供符合UIViewRepresentable的桥接类。

我建议您看一下Apple提供的教程:https://developer.apple.com/tutorials/swiftui/tutorials

以下是该类的示例,可以满足您的要求:

import SwiftUI
import MapKit

struct MapView: UIViewRepresentable {
    var coordinate: CLLocationCoordinate2D

    func makeUIView(context: Context) -> MKMapView {
        MKMapView(frame: .zero)
    }

    func updateUIView(_ view: MKMapView,context: Context) {
        let span = MKCoordinateSpan(latitudeDelta: 0.02,longitudeDelta: 0.02)
        let region = MKCoordinateRegion(center: coordinate,span: span)
        view.setRegion(region,animated: true)
    }
}

然后,在上面的视图中,您可以将Text("MAP")替换为MapView(coordinate: center-coordinate-here)

本文链接:https://www.f2er.com/2789295.html

大家都在问