MKMapView Delegateメソッドが呼び出されない-CalloutAccessoryControlTapped.
-
11-12-2019 - |
質問
CS193Pの課題5の最後の部分を完成させようとしています( link )
アプリはFlickrから人気の場所を選択し、地図上の場所から写真を描画します。
を言うタスク5cです
マップ上の各注釈は、次のものを表示するコールアウトを持つべきです。 c。選択された写真の完全な画像を(ユーザーがテーブルから写真を選択した場合とまったく)またはその場所に写真のリストを作成する開示ボタン(再び、ユーザーがその場所を選択した場合とまったく)テーブルから)。
コールアウトを表示する前の部分をすでに完了し、サムネイルをコールアウトにロードします。
マップビューコントローラをマップビューの委任としてすでに設定し、ピンをクリックするとDidSelectantationViewメソッドが呼び出され、MapViewControllerにも呼び出し、すべてが正常に動作しています。実際にコールアウトの開示アクセサリを表示します。
しかし、メソッドCalloutAccessoryControlTapped(同じVC)も定義され、このメソッドは呼び出されません。まったく。現時点では、そこにNSLOGを持っていて、何も起こりません。
私はそれをより奇妙させるためだけに何も言わず、それが何百もの間で働くことがある注釈が1つあります。
最初の場所からの1つの注釈はボタンを起動しますが、他には何もしません。それは最初の注釈だからですか?そのボタンはそのためにのみ発射されますか?
コードを投稿したかったが、それがどのように関連するかは本当に確かではない:
.@interface flickrthingMapViewController ()<MKMapViewDelegate> @property (weak, nonatomic) IBOutlet MKMapView *mapview; @end @implementation flickrthingMapViewController @synthesize delegate = _delegate; @synthesize mapview = _mapview; @synthesize annotations = _annotations; - (void)viewDidLoad { [super viewDidLoad]; self.mapview.delegate = self; //remembered to set the delegate } -(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)aView { if (![aView.annotation isKindOfClass:[flickrthingPlaceAnnotation class]]) { UIImage *image = [self.delegate flickrthingMapViewContoller:self imageForAnnotation:aView.annotation]; [(UIImageView *)aView.leftCalloutAccessoryView setImage:image]; } UIButton *buttonToViewDetails = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; aView.rightCalloutAccessoryView=buttonToViewDetails; } -(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)aView calloutAccessoryControlTapped:(UIControl *)control { NSLog(@"hello"); }
私が尋ねたすべての質問私は愚かなことをしました、そして、それがここでそれが訴訟であることを願っています。しかし、私はそれを年齢のために見て座っていてそれを見ることができません!
あなたの洞察をありがとう!
解決
DidSelectantationViewのボタンを追加することは遅すぎます!
私は、誰かが実際に注釈を選択しない限り、私はボタンを作成しないことによって効率的になろうとしたと思いましたが、(何らかの理由で何らかの理由で?)DidSelectantAntionViewでボタンが作成された場合、デリゲートメソッドを起動しません。
私はそれをViewForannotationメソッドに移動し、それが機能します!