Hvorfor er du prøver å endre rammeverket? Man bør definere itemIDsom en egenskap eller forekomst variabel (eller begge deler) myAnnotation.h. Du sier at currentAnnotation.itemTag
fungerte ikke; for at det skal fungere, må du ha itemTagdefinert som en egenskap av hva klassen currentAnnotationtilhører.
Endre topptekstfilen for rammen vil ikke rekompilere det, så vil du ikke være i stand til å få det til å fungere.
EDIT: Her er et eksempel.
i MyAnnotation.h:
@interface MyAnnotation : NSObject <MKAnnotation> {
NSString *itemID;
// Other instance variables
}
@property (nonatomic, retain) NSString *itemID;
// Class and instance methods.
@end
i MyAnnotation.m:
@implementation MyAnnotation
@synthesize itemID;
// Your code here.
@end
Den @propertysamtalen definerer eiendommen og @synthesizesamtalen vil skape settere og getters for deg (metoder for å angi og hente verdien av itemID). I MyAnnotation.m, kan du bruke self.itemIDeller [self itemID]å få verdien av itemID, og du kan bruke self.itemID = @"something"eller [self setItemID:@"Something"]å sette verdien.
EDIT 2:
Når du kommer currentAnnotation, hvis kompilatoren ikke vet at merknaden er en forekomst av MyAnnotation klasse, det vil ikke vite om itemID. Så, først sørge for at du har tatt med denne linjen i begynnelsen av .mfilen:
#import MyAnnotation.h
Som wil sikre at kompilatoren vet om klassen. Når du bruker currentAnnotation, kastet du det som et eksempel på MyAnnotationslik:
(MyAnnotation*)currentAnnotation
Det burde stille ned advarslene.