0

我正在使用以下代码来制作自定义 AnnotationView。

MyCustomPointAnnotationMKPointAnnotation具有 setter/getter 的子类Player

   -(void) showMarkers
    {
        [self.mapView removeAnnotations:[self.mapView annotations]];
        for (int i = 0 ; i < [self.playersArray count];  i ++)
        {
            Players *player = [self.playersArray objectAtIndex:i];

            CustomPointAnnotation *annotationPoint = [[CustomPointAnnotation alloc] init];
            [annotationPoint setPlayer:player];

            if ([player.name isEqualToString:self.name.text])
            {
                NSLog(@"%@ , %@" , player.name,self.name.text);
                annotationPoint.coordinate = CLLocationCoordinate2DMake([player.latitude doubleValue]+.1, [player.longitude doubleValue]+.1);
                  [self.mapView addAnnotation:annotationPoint];
            }
            else
            {
                NSLog(@"%@ , %@" , player.name,self.name.text);
                annotationPoint.coordinate = CLLocationCoordinate2DMake([player.latitude doubleValue], [player.longitude doubleValue]);
                [self.mapView addAnnotation:annotationPoint];
            }
         }
        [self.mapView setUserInteractionEnabled:YES];

    }

    - (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
    {
      //  self.mapView.centerCoordinate = userLocation.location.coordinate;
        myLocation = userLocation;
    }

    -(MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
    {
        if ([[annotation title] isEqualToString:@"Current Location"] )
        {
               return nil;
        }


        CustomAnnotationView *annView = [[CustomAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"players"];
        CustomPointAnnotation *ptAnnotation = (CustomPointAnnotation *) annotation;
        [annView setPlayer:ptAnnotation.player];

        annView.image = [UIImage imageNamed:@"marker.png"];
        annView.enabled = YES;
        [annView setUserInteractionEnabled:YES];

        return annView;

    }

问题出在[annView setPlayer:ptAnnotation.player]; Unrecognized selector sent to instance 我正在添加 CustomPointAnnotation 所以它应该将其转换回来。我该如何解决这个问题

4

2 回答 2

1

好的,我不确定你是如何声明自定义类的,但它是这样的:

。H:

@interface CustomPointAnnotation: NSObject <MKAnnotation> {

}

@property (nonatomic) CLLocationCoordinate coordinate;
// Other properties like title, subtitle, etc.

.m

@implementation CustomPointAnnotation 

@synthesize coordinate; // and other properties
于 2013-01-15T07:23:52.290 回答
0
@interface CustomPointAnnotation : NSObject <MKAnnotation>
{

    玩家*玩家;
}
@property(nonatomic,retain) 播放器 *player;
@property (nonatomic) CLLocationCoordinate 坐标;

不要子类化 MKAnnotation 而是确认 MKAnnotation 协议。

@interface CustomAnnotationView : MKAnnotationView
{


}

无需设置播放器。当您需要访问播放器对象时,请使用 CustomAnnotationView 中的注释访问它。

CustomPointAnnotation *annotation=self.annotation;
注释.播放器;
于 2013-01-15T07:23:31.497 回答