试图让一个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];
}
}
答案 0 :(得分:1)
(我的代表还不够发表评论)
其他说明:
如果您尝试选择的注释在屏幕外,则select方法不会产生任何影响(根据文档)。注释肯定可用,但在这种情况下可能没有与之关联的视图。
确保在调用select时未选择注释...也许在进入循环之前尝试取消选择所有注释。
不确定为什么要在注释视图上调用'setHidden',但我会删除任何试图隐藏或显示注释视图的位。在大多数情况下,这取决于MKMapView处理注释视图本身的细节(在显示它们,定位它们等方面)。