gpt4 book ai didi

ios - MkMapView注解选择困境?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:56:04 24 4
gpt4 key购买 nike

好的,我有一个 map View ,上面有一堆注释。选择时的某些注释需要在小表格 View 中显示扩展信息,我正在通过将 map View 大小调整为半屏并将动画显示在下半部分的表格中来显示扩展信息。如果选择了另一个不需要额外信息的注释,那么在 didDeselectAnnotationView: 方法中我隐藏表格并返回到完整的 map View ,冲洗并重复。到目前为止一切顺利,一切都很好。

我遇到的问题是,如果用户在他们当前选择了一个注释时选择了另一个注释,那么 didSelectAnnotationView 委托(delegate)方法将在 didDeselectAnnotationView 的之前 被调用。

这显然是一个问题,因为我正在使用这两种方法来决定是否需要显示/隐藏 map View 下方的信息表,请参见下面的代码:

- (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 会在之后立即调用。

到目前为止,我还没有找到解决这个问题的方法。

有什么想法吗??

最佳答案

您可以检查 didDeselectAnnotationView 中没有可见注释的情况,然后仅在这种情况下清理您的 tableview。因为所有其他情况将由 didSelectAnnotation View 处理。

类似于:

- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view{
if([[mapView selectedAnnotations] count]==0){
mapTableViewIsVisible = NO;
[self loadMapTableViewWithEvents:nil forAnnotation:(MapLocation*)view.annotation];
}
}

关于ios - MkMapView注解选择困境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6891643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com