temsilci yöntemleri çağırmadan değil MKMapView

oy
10

UIViewController I kontrolör tarafından kontrol görünümü için bir MKMapView ekleyin.

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

Daha sonra var denetleyicisi

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

Bitti baskılı geçmez. Bir başka uygulamada bir MKMapView kullanın, ancak bu yaptığım herhangi yeni bir uygulama ortaya çıkıyormuş gibi görünüyorsa: viewForAnnotation: diğer temsilci yöntemlerinden hiçbiri ya MapView gibi denilen olsun. Başkasının bu davranışı gören var mı?

DÜZENLE:

Sorun UIViewController MKMapView delegesi yapıldığında gibi görünüyor, NSObject doğrudan alt sınıf tamam çalışıyor gibi görünüyor. Hala daha önce de yaptık beri çok tuhaf, böyle geçici bir çözüm olabilir.

Oluştur 04/09/2009 saat 14:42
kaynak kullanıcı
Diğer dillerde...                            


10 cevaplar

oy
8

Benim denetleyicisi <MKMapViewDeledate> atanmış olan ve Interface Builder "Dosya sahibi" için temsilci bağlantılı, ama yine de benim uygulanan temsilci yöntemleri olarak adlandırılan değildi: Ben aynı problem vardı.

sebebi iOS 4 yana, haritalar önbelleğe olmasıdır, ve bir uygulama ardından "mapViewDidFinishLoadingMap" gibi yöntemleri önbelleğe alınmış harita görüntülemek zaman çağrılmaz. simülatörde "içeriğini ve ayarları" sıfırlama önbelleğe haritalar temizler ve bu nedenle konuyu çözer.

Cevap 15/01/2011 saat 19:06
kaynak kullanıcı

oy
6

Eski Biraz ama iOS 7 beri işe yarayabilecek yeni bir yöntem yoktur. sorunumu çözdü

- (void)mapViewDidFinishRenderingMap:(MKMapView *)mapView fullyRendered:(BOOL)fullyRendered
Cevap 14/06/2015 saat 22:48
kaynak kullanıcı

oy
4

Belki görünüm conroller için MKMapView gelen IB ve kontrol-sürükle gitmeye gerek, o zaman bir temsilci yapmak için temsilci seçmek ???

Cevap 29/01/2010 saat 00:59
kaynak kullanıcı

oy
1

Ben çağrıldığını MKMapViewDelegate yöntemleri ile benzer bir sorun vardı. Sorunum sadece evimin etrafında bölgeyi göstermek ve dünya görüşü ile başlamaz istedi () kontrolörün -viewDidLoad içinde MKCoordinateRegionMakeWithDistance ve regionThatFits batıyordu. Yani kontrolörün viewDidLoad açıklamaları ekledikten sonra, bir zamanlayıcı başladı. o bir saniye içinde süresi dolduğunda, ben yukarıdaki API'ler ve temsilci yöntemleri ateşle istediğiniz bölgeye yakınlaştırmak. Sadece ben biraz şaşkın ve benim iPad'de kusma eğimli hale getirir.

Şimdi sadece lanetlemek düşük bellek uyarıları ile uğraşmak zorunda.

Cevap 21/05/2010 saat 16:38
kaynak kullanıcı

oy
1

belki oldukça açık, ama sadece kontrol:

Eğer viewcontroller beyanı doğru yapılırsa emin yaptık. Gibi bir şey:

@interface YourViewController : UIViewController <MKMapViewDelegate>
Cevap 04/09/2009 saat 16:02
kaynak kullanıcı

oy
0

Sorunum simülatörde konumunu ayarlamak için unutmak olmasıdır. Gidin Simulator -> Debug -> Location -> Custom location...ve MKMapViewDelegateyöntemler arayarak başlayacak

Cevap 04/04/2017 saat 09:19
kaynak kullanıcı

oy
0

Ben MKMapViewDelegate yöntemlerin hiçbiri denilen ediliyordu iOS 8.1 için inşa XCode 6.1 benzer bir sorunu vardı. beklendiği gibi MKMapViewDelegate yöntemlerinde aynı kod sonucunda 2. uygulamada olarak adlandırılır.

şöyle ViewController.m yılında MapView temsilci kuruldu:

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

ViewController.h In:

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

Ben manuel ama sadece temsilci yöntemleri alınan değildi uygulamasında, başlık dosyasına yukarıdaki IBOutlet hattını eklemişti.

Solüsyon Ben başlığına elle katmıştı IBOutlet satırı silin ve sonra benim ViewController.h içinde @interface bloğuna MKMapView gelen film şeridindeki ve CTRL-sürükle gitmek oldu. aynı IBOutlet tüm temsilci yöntemleri doğru adlandırılan sonuç başlık dosyasında yeniden oldu.

Cevap 01/03/2015 saat 06:55
kaynak kullanıcı

oy
0

Sadece iOS 7'de yine bu koştu ve sürekli olarak çalışan bir şey anladım. Biz genellikle bölgeye önce setRegion aradığını savaşıyoruz sorunu bağlam (render görünümü) sahiptir. IOS 7 her fayans işlenmiş ancak ön IOS 7 önbelleğe fayans çağrılan temsilci yöntemi mapViewDidFinishLoadingMap önler temsil yeni temsilci yöntemleri ekler. Bunun yerine ben olup olmadığını kontrol etmek bir "pendingRegion" değişkeni kullandığınız harita haline getirilir, sonra basitçe haritası ekranına hale olmuştur ve dolayısıyla bölge bağlamı olacak bir sinyal olarak viewDidAppear yöntemi kullanmak edilişi için bir bölge değişikliği "sıraya" .

senin başlığına bir değişken ekleyin:

MKCoordinateRegion pendingRegion;

Kodunuza bu yöntemi ekleyin:

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

senin viewDidAppear Bu ekleyin:

if(pendingRegion.center.latitude != 0.0) {
        MKCoordinateRegion useRegion = pendingRegion;
        [self initPendingRegion];
        [self.mapView setRegion:useRegion animated:YES];
}
Cevap 26/09/2013 saat 16:26
kaynak kullanıcı

oy
-1

Benim için ekledikten sonra çalıştı NSLocationWhenInUseUsageDescriptionInfo.plist içinde dize

Cevap 03/05/2015 saat 12:12
kaynak kullanıcı

oy
-2

Ben de sizinkiyle aynı sorunu bir araya geldi. Bunu bulundu: iPhone SDK 3.2 ile - Ben ilişkili xib dosyası (UIViewController oluşturma iletişim onay kutusu seçeneği) ile yeni bir UIViewController oluştururken, MKMapViewDelegate ait temsilci yöntemleri denir asla.

Ben aşağıdaki yolu takip Ancak, iyi çalışır.

  1. Yeni bir UIViewController sınıf oluşturun (seçeneğini işaretleyin asla: denetleyici ile ilişkili xib dosyası oluşturmak)

  2. Yeni xib dosyası oluşturun. Arayüz Oluşturucu sahibi sınıfına haritası noktasının temsilci nesnesi ayarı + adım 1 sınıfla Sahibi sınıfını ayarlama + kullanarak harita ekleyin.

  3. Adım 1 UIViewController'ın sınıfı için temsilci yöntemleri uygulamak.

  4. Ben (katma harita ile) benim ViewController kullanmak istediğinizde, ben örneğin aşağıdaki gibi ucu adı ile yükleyebilirsiniz:

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

Kod Tamam çalışır. Apple değiştirir biliyorum ya ben sihirbazı kullanarak benim UIViewController oluştururken xib dosyasıyla yaptı ama bu benim sorunun altında yatan neden olabilir yoktur. Bu aptal bir çözüm bulmak için bana 1 gün sürer.

Başka bir tane buldum olursa bana paylaşın.

Teşekkürler

Cevap 02/05/2010 saat 11:09
kaynak kullanıcı

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