Warum versuchen Sie , den Rahmen zu ändern? Sie sollten definieren werden itemIDals eine Eigenschaft oder Instanzvariable (oder beides) in myAnnotation.h. Sie sagen , dass currentAnnotation.itemTag
nicht funktioniert; dafür zu arbeiten, müssen Sie haben itemTagals eine Eigenschaft definiert , was auch immer Klasse currentAnnotationgehört.
die Header-Datei für den Rahmen ändern, wird es nicht neu kompiliert werden, so dass Sie die Lage sein, arbeiten nicht.
EDIT: Hier ist ein Beispiel.
in MyAnnotation.h:
@interface MyAnnotation : NSObject <MKAnnotation> {
NSString *itemID;
// Other instance variables
}
@property (nonatomic, retain) NSString *itemID;
// Class and instance methods.
@end
in MyAnnotation.m:
@implementation MyAnnotation
@synthesize itemID;
// Your code here.
@end
Der @propertyAufruf definiert die Eigenschaft und der @synthesizeAnruf wird für Sie (Methoden zu setzen und den Wert abrufen Getter und Setter erstellen itemID). In MyAnnotation.mkönnen Sie verwenden self.itemIDoder [self itemID]den Wert zu erhalten itemID, und Sie können verwenden self.itemID = @"something"oder [self setItemID:@"Something"]den Wert einzustellen.
EDIT 2:
Wenn Sie erhalten currentAnnotation, wenn der Compiler nicht weiß , dass die Anmerkung eine Instanz Ihrer MyAnnotation Klasse ist, wird es nicht wissen itemID. Also, stellen Sie zuerst sicher , dass Sie diese Zeile am Anfang Ihrer aufgenommen haben .mDatei:
#import MyAnnotation.h
Das wil sorgen dafür , dass der Compiler über die Klasse kennt. Wenn Sie currentAnnotation, werfen Sie es als Instanz in MyAnnotationetwa so:
(MyAnnotation*)currentAnnotation
Das sollte die Warnungen beruhigen.