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】:两件事-
确保您的 ItemMapPoint
和 SquakItemMapPoint
实现所需的协议。
尝试在添加注释之前添加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:如果启用了用户位置,则底部工作表不会打开