Je veux appeler une variable (var view) qu'elle est définie dans une autre fonction (func mapView).

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView?{
   if annotation is MapSeismometerAnnotation{
     if let annotation = annotation as? MapSeismometerAnnotation{
        var view: MKPinAnnotationView
        view = MKPinAnnotationView(annotation: annotation,reuseIdentifier:annotation.identifier)
        ...
        ...
}
@IBAction func pressPlay(_ sender: Any){
    //I want to call here the variable view
}

Ma classe est :

class MapViewController: UIViewController,MKMapViewDelegate,CLLocationManagerDelegate,SCSEarthquakesHandler,SCSPublicSeismometersHandler{

Si je définis la variable var view: MKPinAnnotationView sous la classe (en dehors de la fonction), Xcode me renvoie cette erreur:

Impossible de remplacer la propriété mutable 'view' de type 'UIView?' avec le type de covariant 'MKPinAnnotationView'

Comment puis-je résoudre ça?

1
andreaghezzi 7 oct. 2020 à 13:58

3 réponses

Meilleure réponse

Définir un autre nom

var otherName: MKPinAnnotationView

Le nom de la variable view est en conflit avec la propriété UIView du vc

2
Sh_Khan 7 oct. 2020 à 11:30

La vue ne peut pas être remplacée car elle est utilisée par UIViewController. Par conséquent, vous devez attribuer un autre nom à la variable que view.

Par exemple: var annotationView: MKAnnotationView est autorisé.

1
Kaspar 7 oct. 2020 à 11:04

View est déjà une variable définie dans UIViewController. Choisissez un autre nom pour votre MKPinAnnotationView

1
Kstin 7 oct. 2020 à 11:04