Özel açıklama, 'bilinmeyen alıcı yöntemini Erişme'

oy
0

Ben MapLocation, özel MKAnnotation sınıf yaptık. Ben hiçbir sorun ayarlamak veya bir MKAnnotationView oluşturmak için bu yöntemde dışında özelliklere alma yaşıyorum. o ek açıklamanın indeksinden bir konum türünü arayabilir ve annotationView için özel açıklama görüntülerin bir ailenin birini seçmek gerekiyordu çünkü ben burada bunu yapmak gerekiyor.

MapLocation.h ve .m özel alıcıları ve ayarlayıcıları kurma sayısız denemeden sonra ben bile, (zorunlu) alıcı, başlık kopyalamak TITLE2 olarak adlandırın ve bunun dönüş değeri elde etmeye nerede için aşağı haşlanmış . Bu benim kodudur:

-(MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation {
static NSString *placemarkIdentifier=@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 satırda, başlık doğru döndürülür, ancak kopyalanan yönteme 5 hattın çağrı konudaki hata mesajı verir.

Ben XCode dokümanlarında benziyordu, ama muhtemelen sadece o kadar bu yöntem görüyor ilan etmek nasıl girmem. Tuhaf başlık getter değil title2 kopya olmadığı belirtildi.

Oluştur 18/05/2010 saat 15:42
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
3

Buna nokta gösterimde gelen hattını değiştirmeyi deneyin:

NSString *str2=[annotation title2];

ve hata yok olacaktır.

Ne oluyor var derleyici ek açıklama bir olduğu söylendi olmasıdır MKAnnotation. Eğer var başka hangi yöntemler biliyorum aslında irrelevent; derleyici psişik değil - bilinen tüm açıklama MKAnnotation protokolünü, başka bir şey takip olmasıdır. Başlık MKAnnotation tanımlanır beacuse bu başlık getter görür nedenidir.

Ayrıca, bir döküm kullanarak bu düzeltebilirsiniz:

MapLocation *mapLocation = (MapLocation *)annotation;

Şimdi, diyebilirsiniz

NSString *str2=mapLocation.title2;

Eğer mapLocation bir MapLocation obejct olan derleyici anlattım çünkü.

Cevap 18/05/2010 saat 15:48
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more