-1

我有一个表格视图,其中包含从 sqlite 检索到的地图标题(还存储了纬度和经度值)。

单击每个标题时,我希望在下一个视图中显示该标题的地图。

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) 
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];


    }

    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

    MapColumns *mc=(MapColumns *)[appDelegate.outputArray objectAtIndex:indexPath.row];

    cell.textLabel.text=mc.Title;
    cell.accessoryType=UITableViewCellAccessoryDetailDisclosureButton;
   return cell;

}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    MapView *mv=[[MapView alloc]initWithNibName:@"MapView" bundle:nil];
    [self.navigationController pushViewController:mv animated:YES];
}
4

1 回答 1

1

在为您的地图设置标题方面,您可以title在实例化 MapView 视图控制器时设置它的属性didSelectRowAtIndexPath:。通过再次访问 appDelegate 的 outputArray 来获取标题的值,方法与cellForRowAtIndexPath:.

您还需要一种将 MapColumns 对象传递给 MapView 视图控制器类的方法。为此,请在 MapView 类上创建一个属性并将 MapView 对象分配给该属性,然后再调用pushViewController:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    MapView *mv = [[MapView alloc]initWithNibName:@"MapView" bundle:nil];

    MapColumns *mc = (MapColumns *)[appDelegate.outputArray objectAtIndex:indexPath.row];
    mv.title = mc.Title;

    mv.mapColumns = mc;  // set this property here you you can access the MapColumns object in your MapView view controller

    [self.navigationController pushViewController:mv animated:YES];
}

然后在 MapView 的viewDidLoad方法中,使用mapColumns您设置的属性值来检索纬度和经度并适当地配置您的地图。

如果您不知道如何设置地图并显示注释,您应该从阅读 Apple 的Location Awareness Programming Guide开始。

可以在这里找到另一个有用的 MapKit 教程。

于 2012-08-31T20:26:47.610 回答