사용자 정의 MKAnnotation 클래스 MapLocation을 만들었습니다. 이 메서드에서 MKAnnotationView를 만드는 경우를 제외하고는 속성을 설정하거나 가져 오는 데 문제가 없습니다. 어노테이션의 인덱스에서 위치 유형을 찾고 annotationView에 대한 커스텀 어노테이션 이미지 패밀리 중 하나를 선택해야하기 때문에 여기서이 작업을 수행해야합니다.사용자 정의 주석, '알 수없는 getter 메소드 액세스'
MapLocation.h 및 .m에서 맞춤 getter 및 setter를 설정하려는 시도가 여러 번 있었지만 필자는 (의무적 인) getter, title을 복사 할 수없는 곳에서 그것을 끓여서 title2로 이름을 바꾸고 반환 값을 얻는다.
-(MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation {
static NSString *[email protected]"Map Location Identifier";
NSString *str1=annotation.title;
NSString *str2=annotation.title2;
if([annotation isKindOfClass:[MapLocation class]]) {
MKAnnotationView *annotationView=(MKAnnotationView *)[theMapView dequeueReusableAnnotationViewWithIdentifier:placemarkIdentifier];
if (annotationView==nil) {
annotationView=[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:placemarkIdentifier];
}
else
annotationView.annotation=annotation;
return annotationView;
}
return nil;
} 4 번째 줄에
은, 제목이 제대로 반환되지만 복사 방법에 5 라인의 호출이 항목의 오류 메시지를 얻을 : 이것은 내 코드입니다.
나는 XCode 문서를 살펴 봤지만이 메서드에서 볼 수 있도록 아마도 선언하는 방법을 알지 못하고있다. 이상하게도 제목 getter가 표시되지만 title2 사본은 표시되지 않습니다. 점 표기법에서이에 라인을 변경
사실 이미 답변 한 것을 보았을 때 MapLocation 프로토콜을 선언하는 방법을 실제로보고있었습니다. 이제는 주석에 필요한 색인을 연결하여 위치 유형에 맞는 올바른 이미지를 표시합니다. 감사! 이것은 작동하지 않았습니다 (전에 시도한 적이 있습니다) : NSString * str2 = [annotation title2]; -title2 알 수 없음이라고 표시됩니다. 인터페이스에서 선언하는 데 도움이되지 않습니다. 저와 같은 초보자에게는 약간 이상합니다. "컴파일러는 메시지에 대해 걱정할 필요가 없으므로 런타임입니다." 캐스트없이 추가 속성에 대해 불평 할 것이므로 이제는 이해합니다. 감사합니다. –