2013-06-03 41 views
2

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,這確實解決了這個問題。

希望這會幫助任何人出現類似的問題!

+0

嘗試在didSelectAnnotationView中記錄圖像變量以查看它是否正確。 –

+0

@verbumdei它確實顯示圖像的內存地址。所以我認爲我正確地獲取圖像。 – Enzo

回答

0

我自己解決了這個問題,看到更新部分有問題。