MapKit銷我下面的iOS應用開發的iOS 5版本保羅赫加蒂的講座,和我的工作任務5.不顯示leftCalloutAccessoryView
所以基本上我需要用一個地圖上顯示一些圖片, Flickr提供的數據。
我得到的引腳工作,並顯示標題和字幕,但是,當我試圖把UIImageView
作爲leftCalloutAccessoryView
,它不起作用。
所以我設置地圖視圖控制器作爲其在viewDidLoad
的MapView的委託和它符合MKMapViewDelegate
協議。
我採取了以下兩種方法:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
MKAnnotationView *aView = [mapView dequeueReusableAnnotationViewWithIdentifier:@"MapVC"];
if (!aView) {
aView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"MapVC"];
aView.canShowCallout = YES;
aView.leftCalloutAccessoryView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
}
aView.annotation = annotation;
[(UIImageView *)aView.leftCalloutAccessoryView setImage:nil];
return aView;
}
和
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view {
UIImage *image = [self.delegate mapViewController:self imageForAnnotation:view.annotation];
[(UIImageView *)view.leftCalloutAccessoryView setImage:image];
}
然而,當我點擊一個引腳上,只顯示標題和副標題。我不確定發生了什麼,因爲在這一步基本上我的所有代碼都與他在視頻中的示例類似,我不確定我錯過了什麼。
感謝您的幫助!
---------------------------------更新:----------- -----------------------
我想出了我的問題。
的問題是,我是segue
荷蘭國際集團到的MapViewController,我是在prepareForSegue
添加註釋,但是,mapView
是控制器的IBOutlet
,它是不是在prepareForSegue
設置還,所以基本上我需要更新我的mapView
再次與註釋傳遞給控制器在viewDidLoad
,這確實解決了這個問題。
希望這會幫助任何人出現類似的問題!
嘗試在didSelectAnnotationView中記錄圖像變量以查看它是否正確。 –
@verbumdei它確實顯示圖像的內存地址。所以我認爲我正確地獲取圖像。 – Enzo