Επεξεργασία και πλαίσιο για το iPhone SDK;

ψήφοι
1

Εργάζομαι με MapKit και θέλουν να είναι σε θέση να προσθέσει αξία (NSString *) itemTag σε κάθε ένα από τα σχόλια μου. Έχω δημιουργήσει myAnnotiation.m και myAnnotation.h

Προσπάθησα προσθέτοντας itemTag στο myAnnotation.h / m, αλλά όταν προσπαθώ να αποκτήσετε πρόσβαση currentAnnotation.itemTag κατά κύριο κωδικό μου λέει «δεν Itemid βρέθηκε σε πρωτόκολλα» - έτσι πήγα στο MapKit.Framework και σε MKAnnotation.h. Πρόσθεσα (NSString *) itemID, αλλά όταν αποθηκεύσετε το αρχείο .h στο πλαίσιο, αλλάζει το εικονίδιο του αρχείου και δεν φαίνεται να με χορέψει σε ζωηρό ρυθμό με όλα τα άλλα.

Οποιαδήποτε βοήθεια ή συνδέσμους για να βοηθήσει θα ήταν ευγνώμονες. Δεν είμαι καν σίγουρος αν είμαι στο σωστό δρόμο εδώ, αλλά Googling «τροποποιήσετε πλαίσιο iphone SDK» δεν εμφανιστεί πολύ.

Δημοσιεύθηκε 23/03/2010 στις 17:51
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
4

Γιατί προσπαθείτε να τροποποιήσετε το πλαίσιο; Θα πρέπει να ορίζοντας itemIDως ιδιοκτησία ή instance variable (ή και τα δύο) στο myAnnotation.h. Λέτε ότι currentAnnotation.itemTag δεν λειτούργησε? γι 'αυτό να λειτουργήσει, θα πρέπει να itemTagορίζεται ως ιδιοκτησία του ό, τι κατηγορία currentAnnotationανήκει.

Αλλαγή του αρχείου header για το πλαίσιο δεν θα το μεταγλωττίσετε, έτσι δεν θα είναι σε θέση να πάρει ότι για να λειτουργήσει.

EDIT: Εδώ είναι ένα παράδειγμα.

Σε MyAnnotation.h:

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

@property (nonatomic, retain) NSString *itemID;

// Class and instance methods.

@end

Σε MyAnnotation.m:

@implementation MyAnnotation

@synthesize itemID;

// Your code here.

@end

Η @propertyπρόσκληση καθορίζει την ιδιοκτησία και η @synthesizeκλήση θα δημιουργήσει setters και κτήτορες για σας (μεθόδους για να ρυθμίσετε και να ανακτήσει την αξία του itemID). Στο MyAnnotation.m, μπορείτε να χρησιμοποιήσετε self.itemIDή [self itemID]να πάρει την αξία του itemID, και μπορείτε να χρησιμοποιήσετε self.itemID = @"something"ή [self setItemID:@"Something"]να ορίσετε την τιμή.

EDIT 2:

Όταν φτάσετε currentAnnotation, αν ο compiler δεν ξέρει ότι ο σχολιασμός είναι ένα στιγμιότυπο της κλάσης MyAnnotation σας, δεν θα ξέρετε για itemID. Έτσι, βεβαιωθείτε πρώτα ότι έχετε συμπεριλάβει αυτή τη γραμμή στην αρχή του το .mαρχείο:

#import MyAnnotation.h

Αυτό wil εξασφαλίσει ότι ο μεταφραστής γνωρίζει την κατηγορία. Όταν χρησιμοποιείτε currentAnnotation, να το ρίχνει και μια εμφάνιση του MyAnnotation, όπως αυτό:

(MyAnnotation*)currentAnnotation

Αυτό θα πρέπει να ησυχάζει τις προειδοποιήσεις.

Απαντήθηκε 23/03/2010 στις 18:14
πηγή χρήστη

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