我有一个名为MyAnnotation
的子类来管理注释协议,我的问题是当我构建应用程序时,它给了我这个警告:
'-setTitle:' not found in protocol(s)
编译器指向此行,导致警告:
annView.annotation.title = @"You are here";
其中annView
是MKPinAnnotationView
:
MKPinAnnotationView *annView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currentLoc"];
你可以帮我解决这个警告吗?提前thx:)
答案 0 :(得分:3)
annotation
的{{1}}属性(MKPinAnnotationView
的子类)属于MKAnnotationView
类型,未定义id<MKAnnotation>
方法。< / p>
但是,如果实现-setTitle:
协议的类为自己定义MKAnnotation
方法(例如,使用-setTitle:
声明),则 然后 您可以按如下方式设置标题:
@property
但您应该在创建注释标题时以及在调用MyAnnotationClass *myAnnot = (MyAnnotationClass *)annView.annotation;
myAnnot.title = @"You are here";
之前设置注释的标题,而不是在addAnnotation
中设置它。
此外,命名您的班级viewForAnnotation
可能不是一个好主意。它很容易与MkAnnotation
协议混淆。请改用MKAnnotation
之类的内容。