이 코드는 MapCallouts 데모의 코드입니다. 수백 가지의 다른 주석이 있다고 가정 해보십시오. 애플이 해냈 던 방식으로 많은 코드 중복을 초래할 것이다.여러 개의 MKAnnotation을 더 간단하게 코딩하는 방법은 무엇입니까?
어떤 클래스 인스턴스가 트리거했는지에 관계없이 위임을 트리거 한 클래스 인스턴스의 주석 속성에 액세스하려고합니다.
각 주석을 처리하고 하나의 보편적 인 방법이있는 if 문을 작성하는 것보다 간단한 방법이 있습니까?
- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation
{
// if it's the user location, just return nil.
if ([annotation isKindOfClass:[MKUserLocation class]])
return nil;
// handle our two custom annotations
//
if ([annotation isKindOfClass:[BridgeAnnotation class]]) // for Golden Gate Bridge
{
//do something
}
else if ([annotation isKindOfClass:[SFAnnotation class]]) // for City of San Francisco
{
//do something
}
return nil;
}