MKMapViewDelegate 被调用,但 Pin 没有像我设置的那样下降

Posted

技术标签:

【中文标题】MKMapViewDelegate 被调用,但 Pin 没有像我设置的那样下降【英文标题】:MKMapViewDelegate is called but Pin does not drop as I set 【发布时间】:2013-04-02 10:01:09 【问题描述】:

我尝试制作一个 pin 注释以放入 MapView 。但事实并非如此。

视图控制器有一个表视图,我将 mapView 插入到标题中。

DetailViewController

- (void)viewDidLoad

    [super viewDidLoad];
 self.title = @"Nearby";

  //coord is CLLocationCoordinate2D which is instance variable 

 ItemMapPoint *itemMapPoint = [[SquakItemMapPoint alloc] initWithCoordinate:coord title:@"Test"];
[mapView addAnnotation:itemMapPoint];


MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(coord, 500, 500);
[mapView setRegion:region animated:YES];
//the delegate is not set here but I set it in Interface Builder

self.tableView.tableHeaderView = mapView;


/this is delegate method to set Pin to drop 
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id     <MKAnnotation>)annotation

  MKPinAnnotationView *annoView = [[MKPinAnnotationView alloc]
 initWithAnnotation:annotation
 reuseIdentifier:@"current"];  


annoView.animatesDrop = YES;
annoView.pinColor = MKPinAnnotationColorGreen;
return annoView;

我在代理中设置的 Pin 是绿色的,但是当屏幕加载时 Pin 不会掉落。我也尝试将代码更改为 ViewDidAppear() 但它仍然不起作用。

请帮忙。

提前致谢

【问题讨论】:

我对注解还不是很熟悉,但可以尝试在地图加载完成后使用委托函数 mapViewDidFinishLoadingMap 添加它: 【参考方案1】:

两件事-

    确保您的 ItemMapPointSquakItemMapPoint 实现所需的协议。

    尝试在添加注释之前添加mapView,即self.tableView.tableHeaderView = mapView;,即[mapView addAnnotation:itemMapPoint];

【讨论】:

感谢您的回答,但这对我仍然不起作用。 SquakItemMappoint 已经符合 MKAnnotation 协议。我尝试先设置 self.tableView.tableHeaderView = mapView 但仍然没有运气。 您是否收到任何编译器警告? 不,我没有得到任何 .但是当我点击我的 tableviewcell 时,这个视图控制器会被调用。

以上是关于MKMapViewDelegate 被调用,但 Pin 没有像我设置的那样下降的主要内容,如果未能解决你的问题,请参考以下文章

MKMapViewDelegate 命令因信号而失败:分段错误:11

Swift 2 MKMapViewDelegate rendererForOverlay 可选性

didSelect 上的 MapKit/MKMapViewDelegate:如果启用了用户位置,则底部工作表不会打开

MKPolyline 的问题

p:fileUpload Listener 方法永远不会被调用 mode="simple" [重复]

p:民意调查已停止,但仍然会触发网络电话