我的理解是移植到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;
}
答案 0 :(得分:2)
我遇到了同样的问题,并且在Storyboard中设置MapView委托为我做了诀窍,现在标注箭头正在工作:)
答案 1 :(得分:2)
现在在iOS 6中,您必须在将注释添加到mapView
之前设置委托答案 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。