De ce încerci să modifice cadrul? Ar trebui să fie definirea itemIDca o variabilă de proprietate sau de instanță (sau ambele) myAnnotation.h. Tu spui că currentAnnotation.itemTag
nu a funcționat; pentru că la locul de muncă, trebuie să fi itemTagdefinit ca o proprietate de orice clasă currentAnnotationaparține.
Schimbarea fișierul antet pentru cadrul nu va recompila, așa că nu va fi capabil de a obține că la locul de muncă.
EDIT: Iată un exemplu.
În MyAnnotation.h:
@interface MyAnnotation : NSObject <MKAnnotation> {
NSString *itemID;
// Other instance variables
}
@property (nonatomic, retain) NSString *itemID;
// Class and instance methods.
@end
În MyAnnotation.m:
@implementation MyAnnotation
@synthesize itemID;
// Your code here.
@end
@propertyApelul definește proprietatea și @synthesizeapelul va crea setteri și getteri pentru tine (metode pentru a seta și a prelua valoarea itemID). În MyAnnotation.m, puteți utiliza self.itemIDsau [self itemID]pentru a obține valoarea itemID, și puteți utiliza self.itemID = @"something"sau [self setItemID:@"Something"]pentru a seta valoarea.
EDIT 2:
Când ajungi currentAnnotation, dacă compilatorul nu știe că adnotarea este o instanta a clasei dvs. MyAnnotation, acesta nu va ști despre itemID. Deci, mai întâi asigurați - vă că ați inclus această linie la începutul tău .mfișier:
#import MyAnnotation.h
Aceasta wil asigura ca compilatorul stie despre clasa. Când utilizați currentAnnotation, ai aruncat ca un exemplu de MyAnnotationastfel:
(MyAnnotation*)currentAnnotation
Acest lucru ar trebui să tacă avertismente.