Montaż i ramowa iPhone SDK?

głosy
1

Pracuję z MapKit i chcą, aby móc dodać wartość (NSString *) itemTag do każdego z moich adnotacji. Stworzyłem myAnnotiation.m i myAnnotation.h

Próbowałem dodanie itemTag do myAnnotation.h / m, ale przy próbie dostępu currentAnnotation.itemTag w moim głównym kodu, to mówi „nie ItemID znaleźć w protokołach” - tak poszedłem do MapKit.Framework i do MKAnnotation.h. Dodałem (NSString *) ItemID, ale kiedy zapisać plik .h w Założeniach koncepcyjnych, zmienia ikonę pliku i nie pojawia się przez jiving ze wszystkim innym.

Każda pomoc lub linki do pomocy byłoby bardzo mile widziane. Nie jestem nawet pewien, czy jestem na dobrej drodze tutaj, ale Googling „zmodyfikować ramy iPhone SDK” nie włącza się dużo.

Utwórz 23/03/2010 o 17:51
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
4

Dlaczego starasz się zmodyfikować ramy? Powinno być zdefiniowanie itemIDjako własność lub zmiennej instancji (lub obu) w myAnnotation.h. Mówisz, że currentAnnotation.itemTag nie działa; do tego, aby pracować, trzeba mieć itemTagzdefiniowany jako własność niezależnie od klasy currentAnnotationnależy.

Zmiana nagłówka pliku dla ram nie będzie skompilować go, więc nie będzie w stanie uzyskać to do pracy.

EDIT: Oto przykład.

w MyAnnotation.h:

@interface MyAnnotation : NSObject <MKAnnotation> {
    NSString *itemID;
    // Other instance variables
}

@property (nonatomic, retain) NSString *itemID;

// Class and instance methods.

@end

w MyAnnotation.m:

@implementation MyAnnotation

@synthesize itemID;

// Your code here.

@end

@propertyWezwanie określa właściwość i @synthesizewezwanie stworzy ustawiające i pobierające za ciebie (metody do ustawiania i pobierania wartości itemID). W MyAnnotation.m, można użyć self.itemIDalbo [self itemID]aby uzyskać wartość itemID, a można użyć self.itemID = @"something"lub [self setItemID:@"Something"]ustawić wartość.

EDIT 2:

Gdy dojdziesz currentAnnotation, jeśli kompilator nie wie, że adnotacja jest instancją klasy MyAnnotation, nie będzie wiedzieć itemID. Tak więc, najpierw upewnij się, że masz włączone tę linię na początku swojego .mpliku:

#import MyAnnotation.h

Że wil zapewnić, że kompilator wie o klasie. Podczas korzystania currentAnnotation, rzucisz go jako przykład MyAnnotationtak:

(MyAnnotation*)currentAnnotation

To powinno uspokoić ostrzeżenia.

Odpowiedział 23/03/2010 o 18:14
źródło użytkownik

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