Δεν MKMapView καλώντας τις μεθόδους εκπρόσωπος

ψήφοι
10

Σε μια UIViewController μπορώ να προσθέσω ένα MKMapView με την άποψη που ελέγχεται από τον ελεγκτή.

- (void)viewDidLoad {
[super viewDidLoad];
CGRect rect = CGRectMake(0, 0, 460, 320);
map = [[MKMapView alloc] initWithFrame:rect];
map.delegate = self;
[self.view addSubview:map];
 }

Αργότερα στον ελεγκτή έχω

- (void)mapViewDidFinishLoadingMap:(MKMapView *)mapView
{
     NSLog(@done.);
}

Έγινε ποτέ δεν θα εκτυπωθεί. Καμία από τις άλλες μεθόδους εκπρόσωπο να ονομάζεται είτε σαν MapView: viewForAnnotation: Χρησιμοποιώ ένα MKMapView σε μια άλλη εφαρμογή, αλλά αυτό φαίνεται να συμβαίνει για κάθε νέα εφαρμογή που κάνω. Έχει κάποιος άλλος δει αυτή τη συμπεριφορά;

ΕΠΕΞΕΡΓΑΣΙΑ:

Το πρόβλημα φαίνεται να είναι όταν UIViewController γίνεται τον εκπρόσωπο του MKMapView, άμεση υποκατηγορία των NSObject φαίνεται να λειτουργεί εντάξει. Μπορώ να αντιμετωπίσετε σαν αυτό, εξακολουθεί να φαίνεται πολύ περίεργο δεδομένου ότι έχω κάνει πριν.

Δημοσιεύθηκε 04/09/2009 στις 14:42
πηγή χρήστη
Σε άλλες γλώσσες...                            


10 απαντήσεις

ψήφοι
8

Είχα ακριβώς το ίδιο πρόβλημα: Είχα ανατεθεί <MKMapViewDeledate> σε ελεγκτή μου, και συνδέεται με τον εκπρόσωπο για την «ιδιοκτήτη αρχείων» στο Interface Builder, αλλά ακόμα δεν κλήθηκαν σε εφαρμογή μεθόδους εκπρόσωπος μου.

Ο λόγος είναι ότι από iOS 4, οι χάρτες αποθηκεύονται προσωρινά, και κάθε φορά που μια εφαρμογή εμφανίζει ένα προσωρινά αποθηκευμένο χάρτη, στη συνέχεια, τις μεθόδους, όπως η «mapViewDidFinishLoadingMap» δεν λέγονται. Επαναφορά «του περιεχομένου και των ρυθμίσεων» στον προσομοιωτή καθαρίζει τα προσωρινά αποθηκευμένα χάρτες και ως εκ τούτου, λύνει το πρόβλημα.

Απαντήθηκε 15/01/2011 στις 19:06
πηγή χρήστη

ψήφοι
6

Λίγο παλιό, αλλά αφού το iOS 7 υπάρχει μια νέα μέθοδο η οποία θα μπορούσε να λειτουργήσει. λυθεί το πρόβλημά μου

- (void)mapViewDidFinishRenderingMap:(MKMapView *)mapView fullyRendered:(BOOL)fullyRendered
Απαντήθηκε 14/06/2015 στις 22:48
πηγή χρήστη

ψήφοι
4

Ίσως θα πρέπει να πάτε στο IB και τον έλεγχο σύρετε από το MKMapView στο conroller προβολή, στη συνέχεια, επιλέξτε εκπρόσωπος για να γίνει μια εκπρόσωπο κάνει ???

Απαντήθηκε 29/01/2010 στις 00:59
πηγή χρήστη

ψήφοι
1

Είχα ένα παρόμοιο πρόβλημα με τις μεθόδους της MKMapViewDelegate δεν καλείται. το θέμα μου ήταν ρύθμιση της MKCoordinateRegionMakeWithDistance και regionThatFits σε -viewDidLoad του ελεγκτή () Ήθελα να δείξω μόνο την περιοχή γύρω από το σπίτι μου και να μην ξεκινήσει με την άποψη του κόσμου. Έτσι, μετά την προσθήκη σχολίων στα viewDidLoad του ελεγκτή, άρχισα ένα χρονόμετρο. Όταν λήγει σε ένα δευτερόλεπτο, θα μεγεθύνετε την περιοχή που θέλετε με τους παραπάνω APIs και τις μεθόδους εκπρόσωπος φωτιά. Απλώς με κάνει λίγο ζαλισμένος και την τάση να κάνει εμετό στο iPad μου.

Τώρα έχω μόνο να ασχοληθεί με τις χαμηλές προειδοποιήσεις μνήμης καταριέται.

Απαντήθηκε 21/05/2010 στις 16:38
πηγή χρήστη

ψήφοι
1

ίσως αρκετά προφανής, αλλά μόλις τον έλεγχο:

Έχετε φρόντισε δήλωση viewcontroller σας γίνεται σωστά. Κάτι όπως:

@interface YourViewController : UIViewController <MKMapViewDelegate>
Απαντήθηκε 04/09/2009 στις 16:02
πηγή χρήστη

ψήφοι
0

Το πρόβλημά μου είναι ότι έχω ξεχάσετε να ρυθμίσετε την τοποθεσία στον προσομοιωτή. Πηγαίνετε στο Simulator -> Debug -> Location -> Custom location...και οι MKMapViewDelegateμέθοδοι θα ξεκινήσει την κλήση

Απαντήθηκε 04/04/2017 στις 09:19
πηγή χρήστη

ψήφοι
0

Είχα ένα παρόμοιο πρόβλημα με το Xcode 6.1 κτίριο για το iOS 8.1, όπου καμία από τις μεθόδους MKMapViewDelegate είχαν κληθεί. Σε μια 2η εφαρμογή η ταυτόσημη κώδικας είχε ως αποτέλεσμα τις μεθόδους MKMapViewDelegate καλείται όπως αναμένεται.

Σε ViewController.m ο εκπρόσωπος MapView ορίστηκε ως εξής:

- (void)viewDidLoad {
    ...
    self.mapView.delegate = self;

Σε ViewController.h:

@interface myMapViewController : UIViewController <MKMapViewDelegate>
@property (strong, nonatomic) IBOutlet MKMapView *mapView;
@end

Είχα το χέρι πρόσθεσε τη γραμμή IBOutlet πάνω στο αρχείο κεφαλίδα, αλλά μόνο στην εφαρμογή όπου δεν είχαν λάβει οι μέθοδοι εκπρόσωπος.

Η λύση ήταν να διαγραφεί η σειρά IBOutlet είχα προσθέσει το χέρι στην κεφαλίδα, και στη συνέχεια να πάει στο storyboard και CTRL-σύρετε από το MKMapView στο μπλοκ @interface στο ViewController.h μου. Το ταυτόσημο IBOutlet αναδημιουργήθηκε στο αρχείο κεφαλίδας με αποτέλεσμα ότι όλες οι μέθοδοι πληρεξούσιος κλήθηκαν σωστά.

Απαντήθηκε 01/03/2015 στις 06:55
πηγή χρήστη

ψήφοι
0

Απλά έτρεξε σε αυτό και πάλι για το iOS 7 και κατάλαβα κάτι που να λειτουργεί με συνέπεια. Το θέμα είμαστε συνήθως αγωνίζονται καλεί setRegion πριν από την περιοχή έχει πλαίσιο (άποψη που παρέχονται). iOS 7 προσθέτει νέες μεθόδους πληρεξούσιος που αντιπροσωπεύει όλα τα κεραμίδια να καθίσταται αλλά προ-iOS 7 οι προσωρινά αποθηκευμένες κεραμίδια αποτρέπει τη μέθοδο πληρεξούσιο mapViewDidFinishLoadingMap από το να ονομάζονται. Αντί να χρησιμοποιήσω ένα «pendingRegion» μεταβλητή για να ελέγξετε αν έχω «ουρά» μια αλλαγή περιοχής όταν ο χάρτης καθίσταται και, στη συνέχεια, χρησιμοποιήστε τη μέθοδο viewDidAppear ως σήμα ο χάρτης έχει καταστεί στην οθόνη και ως εκ τούτου η περιοχή θα έχει το πλαίσιο .

Προσθέστε μια μεταβλητή για να επικεφαλίδα σας:

MKCoordinateRegion pendingRegion;

Προσθέστε αυτή τη μέθοδο για τον κωδικό σας:

-(void)initPendingRegion {
    pendingRegion.center = CLLocationCoordinate2DMake(0.0, 0.0);
}

Προσθέστε αυτό να viewDidAppear σας:

if(pendingRegion.center.latitude != 0.0) {
        MKCoordinateRegion useRegion = pendingRegion;
        [self initPendingRegion];
        [self.mapView setRegion:useRegion animated:YES];
}
Απαντήθηκε 26/09/2013 στις 16:26
πηγή χρήστη

ψήφοι
-1

Για μένα, αυτό λειτούργησε μετά την προσθήκη NSLocationWhenInUseUsageDescriptionκορδόνι στο info.plist

Απαντήθηκε 03/05/2015 στις 12:12
πηγή χρήστη

ψήφοι
-2

Γνώρισα επίσης ίδιο θέμα με τα δικά σας. Βρήκα ότι: με το iPhone SDK 3.2 - όταν δημιουργώ ένα νέο UIViewController με ένα σχετικό αρχείο ΧΙβ (η επιλογή πλαίσιο ελέγχου στην UIViewController δημιουργία διαλόγου), οι μέθοδοι εκπρόσωπος της MKMapViewDelegate ποτέ δεν λέγεται.

Ωστόσο, όταν ακολουθήστε τα παρακάτω βήματα, τρέχει καλά.

  1. Δημιουργήστε μια νέα κατηγορία UIViewController (ποτέ δεν τσεκάρετε την επιλογή: να δημιουργήσει αρχείο ΧΙβ συνδέεται με τον ελεγκτή)

  2. Δημιουργήστε ένα νέο αρχείο ΧΙβ. Προσθέστε το χάρτη χρησιμοποιώντας Interface Builder + καθορισμό της κατηγορίας ιδιοκτήτη με την κατηγορία στην βαθμίδα 1 + ρύθμιση εκπρόσωπος αντικείμενο της σημείο του χάρτη στην τάξη ιδιοκτήτη.

  3. Εφαρμόζουν μεθόδους εκπρόσωπος για την κατηγορία UIViewController στο βήμα 1.

  4. Όταν θέλετε να χρησιμοποιήσετε ViewController μου (με την πρόσθετη χάρτη), μπορώ να φορτώσει με τη μύτη όνομα όπως παρακάτω παράδειγμα:

    MapPreviewController* mapPreviewController = [[MapPreviewController alloc] 
        initWithNibName:@"MapPreviewController" bundle:[NSBundle mainBundle]];
    
    [self.centerPanelView addSubview:mapPreviewController.view];
    

Ο κωδικός λειτουργεί εντάξει. Δεν ξέρω τι αλλαγές της Apple ή το έκανε με το αρχείο ΧΙβ όταν δημιουργώ UIViewController μου χρησιμοποιώντας τον οδηγό, αλλά μπορεί η βασική αιτία του προβλήματος μου. Μου παίρνει 1 ημέρα για να βρείτε αυτό το ηλίθιο λύση.

Αν βρεθεί ένα άλλο, παρακαλώ μοιραστείτε μου.

Ευχαριστώ

Απαντήθηκε 02/05/2010 στις 11:09
πηγή χρήστη

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