objective-c - ios: MapView Pin 颜色注释不断变化;为什么?
<p><p>您好,感谢您的帮助。</p>
<p>我正在使用以下代码在我的 MapView 注释上设置图钉颜色?</p>
<pre><code>- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
MKPinAnnotationView *pinView = (MKPinAnnotationView *);
if (!pinView) {
//////////////
pinView = [ initWithAnnotation:annotation reuseIdentifier:@"pinView"];
pinView.pinColor = MKPinAnnotationColorGreen;
if([ isEqualToString:@"MuRoom"])
{
// Do somethingMKAnnotation
pinView.pinColor = MKPinAnnotationColorRed;
NSLog( @"data from ann index %@", annTile);
}
if([ isEqualToString:@"Mike's"])
{
// Do somethingMKAnnotation
pinView.pinColor = MKPinAnnotationColorRed;
NSLog( @"data from ann index %@", annTile);
}
if([ isEqualToString:@"Bill's"])
{
// Do somethingMKAnnotation
pinView.pinColor = MKPinAnnotationColorPurple;
NSLog( @"data from ann index %@", annTile);
}
if([ isEqualToString:@"Steve's"])
{
// Do somethingMKAnnotation
pinView.pinColor = MKPinAnnotationColorGreen;
NSLog( @"data from ann index %@", annTile);
}
if([ isEqualToString:@"Louisa's"])
{
// Do somethingMKAnnotation
pinView.pinColor = MKPinAnnotationColorGreen;
NSLog( @"data from ann index %@", annTile);
}
pinView.animatesDrop = YES;
pinView.canShowCallout = YES;
UIButton *rightButton = ;
pinView.rightCalloutAccessoryView = rightButton;
} else {
pinView.annotation = annotation;
}
return pinView;
}
I am then using the function below to filter my pins locaions
-(void)FilterAddAll:(id)sender
{
;
;
;
// CLLocationCoordinate2D center = mapview.centerCoordinate;
// mapview.centerCoordinate = center;
;
;
;
}
-(void)FilterArt:(id)sender
{
;
;
;
;
}
-(void)FilterVenue:(id)sender
{
;
;
;
;
}
</code></pre>
<p>问题:如何让引脚颜色保持原来的颜色?在我过滤后,它们会作为随机的 pin 颜色返回。 </p>
<p>再次感谢。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>这是因为您没有正确使用“reuseIdentifier”。当您从 dequeueReusableAnnotationViewWithIdentifier:@"pinView"取回 pin 时,您需要:</p>
<p>始终设置图钉颜色,或者
为每个彩色图钉使用不同的重用标识符</p>
<p>即你可能会得到一个带有红色图钉的可重用 View ,并且你想显示一个蓝色图钉</p>
<p>示例:</p>
<pre><code>MKPinAnnotationView *pinView = (MKPinAnnotationView *);
if (!pinView) {
//////////////
pinView = [ initWithAnnotation:annotation reuseIdentifier:@"pinView"];
pinView.animatesDrop = YES;
pinView.canShowCallout = YES;
UIButton *rightButton = ;
pinView.rightCalloutAccessoryView = rightButton;
} else {
pinView.annotation = annotation;
}
// SET THE PIN COLOR REGARDLESS OF WHETHER A REUSABLE ANNOTATION WAS RETURNED OR NOT
pinView.pinColor = MKPinAnnotationColorGreen;
if([ isEqualToString:@"MuRoom"])
{
// Do somethingMKAnnotation
pinView.pinColor = MKPinAnnotationColorRed;
NSLog( @"data from ann index %@", annTile);
}
if([ isEqualToString:@"Mike's"])
{
// Do somethingMKAnnotation
pinView.pinColor = MKPinAnnotationColorRed;
NSLog( @"data from ann index %@", annTile);
}
if([ isEqualToString:@"Bill's"])
{
// Do somethingMKAnnotation
pinView.pinColor = MKPinAnnotationColorPurple;
NSLog( @"data from ann index %@", annTile);
}
if([ isEqualToString:@"Steve's"])
{
// Do somethingMKAnnotation
pinView.pinColor = MKPinAnnotationColorGreen;
NSLog( @"data from ann index %@", annTile);
}
if([ isEqualToString:@"Louisa's"])
{
// Do somethingMKAnnotation
pinView.pinColor = MKPinAnnotationColorGreen;
NSLog( @"data from ann index %@", annTile);
}
</code></pre></p>
<p style="font-size: 20px;">关于objective-c - ios: MapView Pin 颜色注释不断变化;为什么?,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/14106033/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/14106033/
</a>
</p>
页:
[1]