iOS6地图,在我的所有地图上都没有细节披露按钮(蓝色雪佛龙)!如何取回它

时间:2012-09-20 12:04:14

标签: iphone mapkit ios6 ios6-maps

我的理解是移植到iOS 6地图没有问题。但由于某种原因,详细信息披露按钮现在在我的地图App中丢失。有没有办法让这个回来。哇,完全出乎意料。这已经工作多年了,所以所有代表都很好。

#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;
}

9 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,并且在Storyboard中设置MapView委托为我做了诀窍,现在标注箭头正在工作:)

答案 1 :(得分:2)

现在在iOS 6中,您必须在将注释添加到mapView

之前设置委托

在这里看到:http://www.openradar.me/12346693

答案 2 :(得分:2)

我遇到了同样的问题,我只是在注释后把代理放进去并且工作得很好!

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

韩国社交协会, 考卡

答案 3 :(得分:0)

我没有这个问题,我在代码和我的代码之间可以看到的唯一区别是在创建MKPinAnnotationPinView对象时,我首先尝试将其出列:

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

答案 4 :(得分:0)

我有同样的问题,我使用与第一个答案相同的代码:

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

自从更新到xcode 4.5 / iOS 6后,我也注意到了其他问题。

答案 5 :(得分:0)

我在mapKit for iOS 6中注意到的是时机至关重要。将MKMapView的委托设置为late(即在viewDidLoad中),地图将对已添加的注释使用默认注释样式。 我的解决方案是将mapView.delegate = self移动到 - (void)loadView方法。

答案 6 :(得分:0)

@ErCa根据iOS文档,除非您正在构建自定义视图,否则不应调用loadView。

问题出在其他地方。我也有它,一旦找到它就会发一个答案。

@ ed-potter你的目标是iOS4吗?我问,因为你自动发布了ARC不需要的MKPinAnnotationView。

答案 7 :(得分:0)

这也发生在我身上。确实需要在viewDidLoad之前设置MKMapView委托:现在由于某种原因。我最终做的是在我的setMapView:function中设置mapView委托。

因此,对于包含MKMapView的视图控制器,我有以下属性:

@property(非原子,弱)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];

}

答案 8 :(得分:0)

我遇到了同样的问题,同时在self.mapView.delegate = self设置了viewDidLoad,但mapView:viewForAnnotation:未被调用,因此leftCalloutAccessoryView未获得UIImageView我指定了。我回去回顾Ray Wenderlich的Introduction to MapKit in iOS 6 Tutorial,发现了这个:

  

首先选择MainStoryboard.storyboard。然后设置视图控制器   (位于列表顶部)作为地图视图的代表   控制单击地图视图,然后从中拖动一条线   委托进入View Controller。