删除注释一次删除随机数量的注释

时间:2010-04-30 15:41:02

标签: iphone annotations mkmapview

我已经有了这段代码来删除我的mkmapview中的注释(引脚)而不删除我的蓝点(userLocation)。问题是它删除了我在看似随机数字中添加的引脚。当它通过IBAction调用时,它会移除前5个然后再次单击它会删除下一个3,然后是下一个2,然后是最后一个。

按下时我需要它去除最新的针......等等。等

for (int i = 0; 
     i < [mapView.annotations count]; 
     i++

     )



{ if ([[mapView.annotations objectAtIndex:i] isKindOfClass:[MyAnnotation class]])
    { 
[mapView removeAnnotation:[mapView.annotations objectAtIndex:i]]; 
    } 
}

2 个答案:

答案 0 :(得分:1)

问题是你在迭代它时修改annotation集合。每次执行循环时,循环的终止条件[mapView.annotations count]都会更改其值。这将导致不可预见的行为。你应该

  • 将要删除的所有注释放入循环内的空可变数组中,然后在退出循环后使用此数组作为参数调用removeAnnotations:
  • 或将 down 从具有最高索引的注释计数到<。

答案 1 :(得分:0)

使用此代码

NSInteger *counter = [mapView.annotations count];
for (int i = 0; i < counter; i++ )  
{

    if ([[mapView.annotations objectAtIndex:i] isKindOfClass:[MyAnnotation class]]) 
    {
        [mapView removeAnnotation:[mapView.annotations objectAtIndex:i]];  
    }  
}