在tableView中使用mapView注释

时间:2011-05-08 02:24:50

标签: iphone objective-c uitableview mapkit

我是初学者,但一直在努力构建这个应用程序。我问过另一个问题:mapkit and table view sample code - iPhone SDK

我能够将(半)功能的tableview和mapview组合在一起。但是,我不确定如何调用mapview注释来执行numberOfRowsInSection或cellForRowAtIndexPath。

cellForRowAtIndexPath我确定没有正确调用,但我认为它是numberOfRowsInSection和cellForRowAtIndexPath的组合..但说实话,我已经尝试(并且失败)3周并且在我之前阅读所有内容问了这个问题。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

//return [[mapView annotations] count];

return 1; }

所以我试图使用mapview注释的计数,但我甚至不确定这是否有效。

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil)
{
    cell =[[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]autorelease];
}

NSMutableArray *annotations = [[NSMutableArray alloc] init];
        //i'm sure the entire block below is pretty awful but i'm at a standstill

    for (MapLocation *annotation in [mapView annotations])
    {
        [annotations addObject:annotation];

        cell.textLabel.text = [[annotations objectAtIndex:indexPath.row]title];

    }
return cell; //i'm pretty sure this shouldn't be here

}

如果需要任何其他代码来帮助解释我的情况,请告诉我。

1 个答案:

答案 0 :(得分:0)

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

//return [[mapView annotations] count];

return 20;}

所以我知道我一次只有20个注释。这仍然不理想,但它的工作原理

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil)
{
cell =[[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitlereuseIdentifier:CellIdentifier]autorelease];}

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil)
{
    cell =[[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]autorelease];
}

NSMutableArray *annotations = [[NSMutableArray alloc] init];

if(indexPath.row < [[mapView annotations] count])
   {

    for (MapLocation *annotation in [mapView annotations])
    {
        [annotations addObject:annotation];

    }
    cell.textLabel.text = [[annotations objectAtIndex:indexPath.row]title];

   }
    return cell;} 

使用注释信息填充tableview。我通过与Serban Porumbescu一起观看UCDavis课程找到了我的解决方案(他正在讨论桌面视图和对象)。