0

次のコードを使用して、カスタム AnnotationView を作成しています。

Myはのセッター/ゲッターを持つCustomPointAnnotationのサブクラスですMKPointAnnotationPlayer

   -(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

OK、カスタム クラスをどのように宣言したかはわかりませんが、次のようになります。

.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 *player;
@property (非アトミック) CLLocationCoordinate 座標。

MKAnnotation をサブクラス化しないでください。代わりに、MKAnnotation プロトコルに確認してください。

@interface CustomAnnotationView : MKAnnotationView
{


}

プレーヤーを設定する必要はありません。プレーヤー オブジェクトにアクセスする必要がある場合は、CustomAnnotationView の注釈を使用してアクセスします。

CustomPointAnnotation *annotation=self.annotation;
注釈.プレイヤー;
于 2013-01-15T07:23:31.497 に答える