我已经将MKAnnotation子类化,以便我可以将对象分配给注释,然后将此对象分配给视图控制器,如下所示:
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {
PlaceDetailView *detailView = [[PlaceDetailView alloc] initWithStyle:UITableViewStyleGrouped];
detailView.place = [view.annotation place];
[self.navigationController pushViewController:detailView animated:YES];
[detailView release];
}
这很有效,但我遇到了以下问题:
如果我尝试访问像view.annotation.place
这样的地方getter方法,我会收到错误:
访问未知地点的getter方法
如果我像[view.annotation place]
那样访问地点getter方法,我会收到警告:
在协议中找不到的地方
根据我的理解,这是因为地方对象没有在MKAnnotation协议中定义,虽然我知道这个我不知道如何告诉编译器这个地方确实存在而且它并没有把它称为盲目。
答案 0 :(得分:1)
如果您确定view.annotation
始终是您的自定义类,那么您可以将它投射到您的班级:
MyAnnotation *my = (MyAnnotation *)view.annotation;
detailView.place = my.place;