2016-05-24 15 views
0

ich Code schreiben mkannotation Stift Bild zu ändern, wenn Scroll-Seite .... aber ich werde Test kann es nicht ändern dies ist mein CodeMKAnnotation Stift Bild ändert sich nicht, wenn Scroll

-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation{ 
int pageNum = (int)(self.scroll.contentOffset.x/self.scroll.frame.size.width); 
if(pageNum==0){ 
    if([[annotation title]isEqualToString:@"place1"]){ 
    myPin = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"place"]; 
    myPin =[[MKAnnotationView alloc] 
      initWithAnnotation:annotation reuseIdentifier:@"place"]; 
    myPin.image = [UIImage imageNamed:@"star.png"]; 
    } 
} 
else if (pageNum==1){ 
    if([[annotation title]isEqualToString:@"place2"]){ 
     myPin = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"place"]; 
     myPin =[[MKAnnotationView alloc] 
       initWithAnnotation:annotation reuseIdentifier:@"place"]; 
     myPin.image = [UIImage imageNamed:@"star.png"]; 
    } 
} 
else if (pageNum==3){ 
    if([[annotation title]isEqualToString:@"place3"]){ 
    myPin = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"place"]; 
    myPin =[[MKAnnotationView alloc] 
      initWithAnnotation:annotation reuseIdentifier:@"place"]; 
    myPin.image = [UIImage imageNamed:@"star.png"]; 
    } 
} 
} 

Antwort

0

Wenn ich Wenn ich Ihre Frage richtig lese, scheint es, als ob Sie einen View-Controller mit einer Bildlaufansicht darin haben und Sie möchten, dass Marker auf der Karte (oder den Maps) angepasst werden, basierend auf welcher 'Seite' der Bildlaufansicht gerade angezeigt wird.

Ich vermute, dass Code nicht funktioniert, weil Sie nicht wirklich Kontrolle darüber haben, wenn diese Anmerkungsansichten erstellt werden; MapKit ruft die Methode nur dann auf, wenn sie eine Ansicht benötigt. (Ich nehme an, dass Sie wissen, dass der obige Code das gleiche Pin-Bild für alle drei Seiten verwendet, und dass Sie den pageNum==2-Fall nicht abgedeckt haben.) Ich denke, ein besserer Ansatz könnte sein, herauszufinden, wann Die Bildlaufansicht wurde auf eine neue Seite verschoben. An dieser Stelle können Sie verschiedene Anmerkungen entfernen und erneut hinzufügen, damit sie die gewünschte Darstellung haben. Es ist schwer, eine bessere Antwort zu geben, weil ich mir das Layout, mit dem Sie arbeiten, nicht wirklich vorstellen kann.