0

だから私は自分のviewForAnnotationをそのように実装しました

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
static NSString *identifier = @"id";

if ([annotation isKindOfClass:[infl8Node class]]) {
    NSLog(@"Creating a pin");
    MKPinAnnotationView *annotationView = (MKPinAnnotationView *) [_mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
    if (annotationView == nil) {
        annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
    } else {
        annotationView.annotation = annotation;
    }

    annotationView.enabled = YES;
    annotationView.canShowCallout = YES;

    return annotationView;
}

return nil;
}

しかし、私はまだこのエラーに遭遇しています:

2012-11-18 22:12:35.608 Infl8[5960:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[infl8Node coordinate]: unrecognized selector sent to instance 0x846f460'

このエラーの原因を知っている人はいますか? 注釈がクラス MKUserLocation のものである場合までたどりました。

編集: infl8Node.h ファイルは次のとおりです。

#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
#import <MapKit/MapKit.h>

@interface infl8Node : NSObject <MKAnnotation>

@property (nonatomic, strong) NSString *accountName;
@property (nonatomic, strong) NSString *status;
@property (nonatomic, strong) CLLocation *location;
@property (nonatomic, strong) NSDictionary *address;

- (id) initWithDictionary:(NSDictionary *)dict;
- (MKMapItem *) mapItem;
@end
4

1 に答える 1

0

MKAnnotationプロトコルを実装するクラスは、coordinateプロパティを実装する必要があります。

クラスはそれinfl8Nodeを行っていないようです。そのため、このunrecognized selectorエラーが発生します。

少なくとも、クラスはcoordinateその場所に関連付けられた座標を返すメソッドを実装する必要があります。

于 2012-11-19T03:36:41.240 に答える