iPhone - 使用UITableview didSelectRowAtIndexPath方法显示叠加层

时间:2011-04-05 08:45:18

标签: iphone overlay tableview

问候, 我已经进入iOS只有1.5个月了,我希望我不会问一个已在这里得到解答的问题。这是:

我有tableview列出了一些持续时间,每个持续时间属于一个包含时间戳坐标的叠加层:

for (NSUInteger i = 0; i < [dataset count]; i++)
    {   
        crumbPath = [[CrumbPath alloc] initWithCenterCoordinate:mapView.userLocation.coordinate]; //crumbPath is my overlay

        NSDictionary *route = [dataset objectAtIndex:i];
        NSArray *points = [route objectForKey:@"Points"];

        for (NSUInteger j = 0; j < [points count]; j++)
        {
            NSDictionary *point = [points objectAtIndex:j];

            float latitude = (float)([[point objectForKey:@"Latitude"] doubleValue]/1000000);
            float longitude = (float)([[point objectForKey:@"Longitude"] doubleValue]/1000000);

            CLLocationCoordinate2D tempCoord = CLLocationCoordinate2DMake(latitude, longitude);

            [crumbPath addCoordinate:tempCoord];
        }
        [mapView addOverlay:crumbPath];
        [crumbPath release];
    }

据我所知,我可以在我的tableview上列出持续时间,我现在要做的是,使用tableView:didSelectRowAtIndexPath方法我想,显示在tableview上点击其持续时间的叠加层。现在,我的叠加层全部显示在mapview上,我想只显示所选的一个。

提前致谢!

阿里

2 个答案:

答案 0 :(得分:1)

对我遗忘的问题发表答案。

tableView:didSelectRowAtIndexPath:内,我首先删除了所有叠加层,然后添加了从表格视图中获取索引的所选叠加层。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
     [self.mapView removeOverlays:crumbs]; //crumbs - overlay array
     [self.mapView addOverlay:[crumbs objectAtIndex:[indexPath row]]];
}

答案 1 :(得分:0)

- (void)removeOverlay:(id < MKOverlay >)overlay可用于删除您不想再显示的内容。