【问题标题】:Accessing the "selected" property of custom MKAnnotationView?访问自定义 MKAnnotationView 的“选定”属性?
【发布时间】:2010-02-24 17:09:49
【问题描述】:

我正在尝试使用 MKAnnotationView 中的“selected”属性(讨论过here),这是为了让用户能够删除选定的注释......

以下代码应该在 MKMapView 中找到选定的引脚并将其删除:

CSMapAnnotation *a;

for(a in [mapView annotations])
{
    if([a selected]) //Warning: 'CSMapAnnotation' may not respond to '-selected'
    {
        [mapView removeAnnotation:a];
    }
}

CSMapAnnotation 是我的自定义地图注释,定义如下:

#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>

// types of annotations for which we will provide annotation views. 
typedef enum {
    kCMapAnnotationTypeStart        = 0,
    kCMapAnnotationTypeCheckpoint   = 1,
    kCMapAnnotationTypeEnd          = 2
} CSMapAnnotationType;

@interface CSMapAnnotation : NSObject <MKAnnotation>
{
    CLLocationCoordinate2D coordinate;
    CSMapAnnotationType    annotationType;
    NSString*              title;
    NSString*              userData;
}

-(id) initWithCoordinate:(CLLocationCoordinate2D)inCoordinate 
          annotationType:(CSMapAnnotationType) annotationType
                   title:(NSString*)title;

- (BOOL) isEqualToAnnotation:(CSMapAnnotation *) anAnnotation;

@property (nonatomic, readwrite) CLLocationCoordinate2D coordinate;
@property (nonatomic, readwrite) CSMapAnnotationType    annotationType;
@property (nonatomic, retain) NSString* title;
@property (nonatomic, retain) NSString* userData;

我认为因为我并没有真正从MKAnnotationView“继承”,CSMapAnnotation 不会回复selected

解决此问题的最佳方法是什么??

【问题讨论】:

    标签: iphone cocoa-touch mkmapview mkannotation


    【解决方案1】:

    你的假设是对的;由于 CSMapAnnotation 不是从 MKAnnotationView 继承的,并且您还没有实现 selected 属性,因此它将不起作用。

    另外,您是否管理 CSMapAnnotation 与 MKAnnotationView 的关系以将注释视图(引脚)映射到存储在 CSMapAnnotation 中的数据?请记住,MKAnnotationView 具有 selected 属性,而不是 MKAnnotation。

    如果您正在管理注释以正确查看映射,这应该适合您:

    CSMapAnnotation *a; 
    
    for(a in [mapView selectedAnnotations])
    {
        //You may want a type-check here
        [mapView removeAnnotation:a];
    }
    

    甚至:

    [mapView removeAnnotations:[mapView selectedAnnotations]];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-03
      • 2015-09-28
      • 1970-01-01
      相关资源
      最近更新 更多