ना बुलाने 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>, और प्रतिनिधि "फाइल मालिक" इंटरफ़ेस बिल्डर में से जुड़ा हुआ है, लेकिन अभी भी मेरे कार्यान्वित प्रतिनिधि तरीकों नहीं बुलाया गया।

कारण यह है कि आईओएस 4 के बाद से, नक्शे कैश नहीं किया जाता है, और जब भी कोई ऐप्लिकेशन एक संचित मैप को प्रदर्शित तो इस तरह के "mapViewDidFinishLoadingMap" के रूप में तरीकों कहा जाता है नहीं कर रहे हैं। "सामग्री और सेटिंग्स" रीसेट किया जा रहा सिम्युलेटर में संचित मैप को साफ करता है और इसलिए इस मुद्दे को हल करती है।

15/01/2011 को 19:06
का स्रोत उपयोगकर्ता

वोट
6

थोड़ा पुराने, लेकिन iOS 7 के बाद से वहाँ एक नई पद्धति है कि काम हो सकता है है। मेरी समस्या हल

- (void)mapViewDidFinishRenderingMap:(MKMapView *)mapView fullyRendered:(BOOL)fullyRendered
14/06/2015 को 22:48
का स्रोत उपयोगकर्ता

वोट
4

शायद आप दृश्य conroller को MKMapView से आईबी और नियंत्रण खींचें करने के लिए जाने की जरूरत है, तो यह एक प्रतिनिधि बनाने के लिए प्रतिनिधि का चयन ???

29/01/2010 को 00:59
का स्रोत उपयोगकर्ता

वोट
1

मैं MKMapViewDelegate के तरीकों नहीं बुलाया जा रहा है के साथ एक समान समस्या थी। मेरे मुद्दा नियंत्रक के -viewDidLoad में MKCoordinateRegionMakeWithDistance और regionThatFits की स्थापना की गई थी () मैं केवल अपने घर के आसपास क्षेत्र को दिखाने के लिए और दुनिया को देखने के साथ शुरू नहीं करना चाहता था। तो नियंत्रक के viewDidLoad में एनोटेशन जोड़ने के बाद, मैं एक टाइमर शुरू कर दिया। जब यह एक सेकंड में समाप्त हो रहा है, मैं क्षेत्र मैं ऊपर एपीआई और प्रतिनिधि तरीकों आग के साथ चाहते हैं पर ज़ूम। यह सिर्फ मुझे एक छोटे से चक्कर आ और मेरी 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

मैं आईओएस 8.1 जहां MKMapViewDelegate तरीकों में से कोई भी बुलाया जा रहा था के लिए निर्माण XCode 6.1 में एक ऐसी ही समस्या हुई। एक 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 लाइन मैं शीर्षक के लिए मैन्युअल रूप से जोड़ा था नष्ट करने के लिए, और फिर मेरा ViewController.h में @interface ब्लॉक करने के लिए MKMapView से स्टोरीबोर्ड और CTRL खींचें करने के लिए जाना था। समान 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

मेरे लिए, यह जोड़ने के बाद काम किया NSLocationWhenInUseUsageDescriptionInfo.plist में स्ट्रिंग

03/05/2015 को 12:12
का स्रोत उपयोगकर्ता

वोट
-2

मैं भी तुम्हारा के रूप में ही इस मुद्दे से मुलाकात की। मुझे लगता है कि पाया: iPhone SDK 3.2 के साथ - जब मैं एक संबद्ध xib फ़ाइल (UIViewController बनाने संवाद में विकल्प) के साथ एक नया UIViewController बनाने के लिए, MKMapViewDelegate के प्रतिनिधि तरीकों कभी नहीं कहा जाता है।

हालांकि, जब मैं नीचे दिए गए चरणों का पालन करें, यह अच्छी तरह से चलाता है।

  1. (विकल्प की जाँच कभी नहीं: xib नियंत्रक के साथ जुड़े फाइल बनाने) एक नई UIViewController कक्षा बनाएं

  2. एक नया xib फ़ाइल बनाएँ। का उपयोग करते हुए इंटरफ़ेस बिल्डर चरण 1 मानचित्र बिंदु मालिक वर्ग के प्रतिनिधि वस्तु की स्थापना + पर वर्ग के साथ मालिक वर्ग की स्थापना + मानचित्र जोड़ें।

  3. चरण 1 में UIViewController वर्ग के लिए प्रतिनिधि के तरीकों को लागू करें।

  4. जब मैं (जोड़ा नक्शे के साथ) मेरी ViewController उपयोग करना चाहते हैं, मैं इसे उदाहरण के नीचे के रूप में निब नाम के साथ लोड:

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

कोड ठीक चलाता है। मैं नहीं पता है क्या एप्पल बदलता है या जब मैं विज़ार्ड का उपयोग कर मेरी UIViewController बनाने xib फ़ाइल के साथ किया था, लेकिन यह मेरी समस्या के मूल कारण हो सकता है। यह मुझे 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