Я использую MapKit в Xcode 11.1 с SwiftUI, чтобы показать карту с аннотациями. Аннотации имеют выноску, в которой отображается заголовок, и кнопку в правом элементе CallCalloutAccessoryView. Я хочу иметь возможность перейти к другому представлению, когда пользователь нажимает кнопку rightCalloutAccessoryView.
Функция NavigationLink в функции calloutAccessoryControlTapped не работает. Как это сделать в SwiftUI? Любая помощь очень ценится!
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "AnnotationView")
if annotationView == nil {
annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: "AnnotationView")
}
let whiteImage = UIImage(named: "white")
annotationView!.image = whiteImage
annotationView?.isEnabled = true
annotationView?.canShowCallout = true
annotationView?.centerOffset = CGPoint(x: 0, y: -23)
let button = UIButton(type: .detailDisclosure)
annotationView?.rightCalloutAccessoryView = button
return annotationView
}
func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {
@State var tapped = true
//ERROR: Property wrappers are not yet supported on local properties
NavigationLink(destination: DetailView(), isActive: $tapped) {EmptyView()}
//ERROR: Use of unrecognized identifier '$tapped'
}