Как мне добавить «.setRegion» в updateUIView в SwiftUI MapKit?

#swift #xcode #swiftui

#быстрый #xcode ( код x ) #свифтуи #swift #xcode #swiftui

Вопрос:

Мне нужно работать с MapKit в SwiftUI. Раньше я использовал раскадровку. Я не могу выполнить «UIView.setRegion» после вызова функции «updateUIView» для использования MapKit. Как я могу решить эту проблему?

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

Я получаю это сообщение об ошибке: значение типа ‘some UIView’ не имеет элемента ‘setRegion’

Комментарии:

1. Ваш UIViewType должен быть MKMapView, но, как я вижу, его не должно быть в updateUIView, сделайте это в makeUIView.

Ответ №1:

пожалуйста, обновите func updateUIView(_ uiView: UIViewType, context: Context) до func updateUIView(_ uiView: MKMapView, context: Context)

и для того, чтобы updateUIView получить uiView: as MKMapView , вам нужно будет вернуть MKMapView в makeUIView функцию, так что что-то вроде этого func makeUIView(context: Context) -> MKMapView

 struct MapView: UIViewRepresentable {
    func makeUIView(context: Context) -> MKMapView {
        MKMapView(frame: .zero)
    }
    
    func updateUIView(_ uiView: MKMapView, context: Context) {

        let span = MKCoordinateSpan(latitudeDelta: 2.0,
                                    longitudeDelta: 2.0)
        let region = MKCoordinateRegion(center: coordinate,
                                        span: span)
        uiView.setRegion(region,animated: true)
    }
}