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