好的,我有一个地图视图,上面有一堆注释。当选中某些标注时,需要在一个小表视图中显示扩展信息,我通过将地图视图调整为半屏幕大小,并在底部半屏幕中动画化地显示表视图来实现这一点。如果选中另一个不需要额外信息的注释,则在didDeselectAnnotationView:方法中隐藏表格并返回完整的地图视图,反复进行...到目前为止,一切都很好,一切正常工作。
所以例如,如果我选择一个需要地图表的注释,并且我当前选择了常规注释,则在调用上面的didSelectAnnotationView方法时加载mapTable,然而它立即被隐藏,因为紧接着就会调用didDeselectAnnotationView。
到目前为止,我还没有找到解决这个问题的方法。
有什么想法吗?
但问题是,如果用户在已经选择一个注释的情况下选择了另一个注释,则会先调用didSelectAnnotationView代理方法然后才是didDeselectAnnotationView。
这显然是一个问题,因为我正在使用这两种方法来决定是否需要显示/隐藏地图视图下面的信息表。代码如下:
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
if ([view.annotation isKindOfClass:[MapLocation class]])
{
if ([self.selectedAnnotation numberOfEvents] == 1)
{
mapTableViewIsVisible = NO;
}
else if ([self.selectedAnnotation numberOfEvents] > 1)
{
// launch mini tableview
mapTableViewIsVisible = YES;
}
[self loadMapTableViewWithEvents:self.selectedAnnotation.events
forAnnotation:self.selectedAnnotation];
}
}
- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view
{
if ([view.annotation isKindOfClass:[MapLocation class]])
{
mapTableViewIsVisible = NO;
[self loadMapTableViewWithEvents:nil forAnnotation:(MapLocation*)view.annotation];
}
}
所以例如,如果我选择一个需要地图表的注释,并且我当前选择了常规注释,则在调用上面的didSelectAnnotationView方法时加载mapTable,然而它立即被隐藏,因为紧接着就会调用didDeselectAnnotationView。
到目前为止,我还没有找到解决这个问题的方法。
有什么想法吗?