5

私の理解では、iOS6マップへの移行に問題はありませんでした。しかし、何らかの理由で、詳細開示ボタンが私のマップアプリに表示されなくなりました。これを取り戻す方法はありますか?うわー、まったく予想外。これは何年も機能しているので、すべての代表者は大丈夫です。

#pragma mark MKMapViewDelegate
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {

MKPinAnnotationView *pin = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"REUSEME"] autorelease];
UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];

if ([annotation isKindOfClass:[MKUserLocation class]]) {
    pin.animatesDrop = YES;
    return nil;
} else {
    [pin setPinColor:MKPinAnnotationColorGreen];
}

pin.rightCalloutAccessoryView = button;
pin.animatesDrop = YES;
pin.canShowCallout = YES;

return pin;
}
4

9 に答える 9

2

同じ問題が発生し、ストーリーボードにMapViewデリゲートを設定することでうまくいき、コールアウトの矢印が機能するようになりました:)

于 2012-10-22T03:22:32.063 に答える
2

iOS 6では、mapViewに注釈を追加する前にデリゲートを設定する必要があります

ここで見られる:http ://www.openradar.me/12346693

于 2012-11-22T23:16:52.033 に答える
2

同じ問題が発生しました。デリゲートを注釈の後に配置するだけで、完全に機能します。

mapView.delegate = self;
[self.mapView addAnnotation:ann];

Tks、カウカ

于 2013-03-22T00:47:55.653 に答える
0

私にはこの問題はありません。あなたのコードと私のコードの違いは、最初にデキューしようとしたときにMKPinAnnotationPinViewオブジェクトを作成することだけです。

    MKPinAnnotationView *pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"CustomPinAnnotationView"];
于 2012-09-20T12:34:29.573 に答える
0

私は同じ問題を抱えており、最初の答えと同じコードを使用しています:

MKPinAnnotationView * MyPin =(MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@ "MyPin"];

xcode 4.5 / iOS 6にアップデートしてから、他の問題にも気づきました。

于 2012-09-22T23:12:42.540 に答える
0

mapKit for iOS 6で気付いたのは、タイミングが重要だということです。MKMapViewのデリゲートをlate(つまり、viewDidLoad内)に設定すると、マップは、すでに追加されている注釈に対してデフォルトの注釈スタイルを使用します。私にとっての解決策は、mapView.delegate = selfを-(void)loadViewメソッドに移動することでした。

于 2012-09-24T10:47:07.107 に答える
0

@ErCa iOSのドキュメントによると、カスタムビューを作成する場合を除いて、loadViewを呼び出さないでください。

問題は他の場所にあります。私も持っており、見つけたら回答を投稿します。

@ ed-potter iOS4をターゲットにしていますか?ARCでは不要なMKPinAnnotationViewを自動リリースするのでお願いします。

于 2012-09-29T13:40:55.963 に答える
0

これは私にも起こりました。確かに、MKMapViewデリゲートはviewDidLoadよりも前に設定する必要があります:何らかの理由で今。私がやったことは、setMapView:関数内でmapViewデリゲートを設定することです。

したがって、MKMapViewを含むView Controllerには、次のプロパティがあります。

@property(nonatomic、weak)IBOutlet MKMapView * mapView;

したがって、setMapView関数内に配置します。

-(void)setMapView:(MKMapView *)mapView {

_mapView = mapView;

self.mapView.delegate = self;//needed to move setting of the mapView delegate here because they changed when the viewForAnnotations delegate function is called when Apple went to iOS 6 and changed the maps App.  Now all of the annotations are loaded and the views for those annotations are set up before the View Controller even calls viewDidLoad.

[self updateMapView];

}

于 2012-09-30T19:53:48.553 に答える
0

私は同じ問題を抱えていて、設定もself.mapView.delegate = selfしてviewDidLoadいましたmapView:viewForAnnotation:が、呼び出されなかったので、指定したものをleftCalloutAccessoryView取得できませんでしたUIImageView。私はiOS6チュートリアルでのRayWenderlichのMapKit入門をレビューしに戻って、これを見つけました:

まず、MainStoryboard.storyboardを選択します。次に、マップビューをクリックし、デリゲートエントリからView Controllerに線をドラッグして、View Controller(リストの右上)をマップビューのデリゲートとして設定します。

于 2012-11-04T14:37:48.747 に答える