【问题标题】:must implement title when canShowCallout is YES当 canShowCallout 为 YES 时必须实现 title
【发布时间】:2014-01-12 13:31:42
【问题描述】:

我在尝试在地图注释上显示标注时遇到此异常,即使已设置标题也是如此。

这是我在 MapAnnotation 类中使用的 init 方法:

- (id)initWithTitle:(NSString *)ttl subtitle:(NSString *)sub andCoordinate:(CLLocationCoordinate2D)c2d {
    titles = ttl;
    coordinate = c2d;
    subtitle = sub;
    return self;
}

然后,在另一个类的某个地方,我正在创建注释(两种不同的方法中的 2 个):

MapAnnotation *annotation = [[MapAnnotation alloc] initWithTitle:[formatter stringFromDate:sourceDate] subtitle:@"test" andCoordinate:CLLocationCoordinate2DMake(point.latitude, point.longitude)];
[self.mapView addAnnotation:annotation];

这是注解方法:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
    if (annotation == mapView.userLocation)
        return nil;

    static NSString *s = @"ann";
    MKAnnotationView *pin = [mapView dequeueReusableAnnotationViewWithIdentifier:s];
    if (!pin) {
        pin = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:s];
        pin.canShowCallout = YES;
        pin.image = [UIImage imageNamed:@"pin.png"];
        pin.calloutOffset = CGPointMake(0, 0);
    }
    return pin;
}

我想做的另一件事是为两个地图注释使用两个不同的图像。 有什么想法吗?

谢谢。

【问题讨论】:

  • 你遇到了什么错误?
  • @Daij-Djan 问题标题中的那个。
  • 没有错误信息什么的
  • 如果标题是你的错误信息,那么意思似乎很清楚:D

标签: ios map mkannotation mkannotationview


【解决方案1】:

您的 MapAnnotation 应该包含标题属性,而不是地图标注的标题。声明如下

@property (nonatomic, copy) NSString *title;

【讨论】:

  • pin 是一个 MKAnnotationView 对象,它没有 title 属性。
  • 我的 MapAnnotation 确实包含一个 title 属性。
  • 不,它被命名为标题而不是您在上面的问题中发布的标题。
  • 看看你的 MapAnnotation 的 initWithTitle 方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多