iOS 5.0 didSelectAnnotationView

时间:2011-11-21 14:01:12

标签: ios ios5 mapkit

试图让一个didSelectAnnotationView被调用有点沮丧......

我的情况: 当选择了索引中的一个项目时,我的应用程序使用TabBar控制器从INDEX视图切换到MAP视图(INDEX选项卡到MAP选项卡)。没问题,让它在4.3下工作,但5.0下的一个有趣的问题。

如果我之前选择了MAP选项卡(如MAP视图中已加载),则会弹出注释“bubble”以显示所选点...没问题。但是,如果我在选择索引列表中的一个项目之前没有选择MAP选项卡,则会加载MAP视图,但不会调用didSelectAnnotationView方法。

这只发生一次......因为,一旦加载了MAP视图,一切都按预期响应。

再次,在4.3下,无论先前是否已加载MAP视图,都会每次调用didSelectAnnotationView。

有什么想法......?

至于我的编码,我在viewDidLoad方法下加载所有注释,viewWillAppear是这样的:

//Run through all annotations
for (id<MKAnnotation> annotation in mapView.annotations) {

    //Check if that annotation is the selected one
    if (annotation.coordinate.longitude == mylongitude) {
        [[mapView viewForAnnotation:annotation] setHidden:FALSE];
        [mapView selectAnnotation:annotation animated:YES];
    }
}

1 个答案:

答案 0 :(得分:1)

(我的代表还不够发表评论)

  1. 首先,验证您的问题场景中是否找到了注释 - 在IF语句中放置断点以进行确认。
  2. 其他说明:

    • 如果您尝试选择的注释在屏幕外,则select方法不会产生任何影响(根据文档)。注释肯定可用,但在这种情况下可能没有与之关联的视图。

    • 确保在调用select时未选择注释...也许在进入循环之前尝试取消选择所有注释。

    • 不确定为什么要在注释视图上调用'setHidden',但我会删除任何试图隐藏或显示注释视图的位。在大多数情况下,这取决于MKMapView处理注释视图本身的细节(在显示它们,定位它们等方面)。