根据所选单元格在mapview中添加注释引脚

时间:2012-03-22 20:08:37

标签: xcode uitableview annotations mapkit

我有Table View控制器,然后它有子类DetailViewController,其内容根据选择的单元格而变化,但是当继续前进时,从我的DetailViewController转到MapView,我尝试使用我用于在DetailViewController上获取文本的相同方法,但无论我做什么,它都不行。我现在更喜欢它3周了:(

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

{          if(!self.detailViewController){         self.detailViewController = [[DetailViewController alloc] initWithNibName:@“DetailViewController”bundle:nil];

[self.navigationController pushViewController:self.detailViewController animated:YES];
[self.detailViewController changeProductText:[teksti objectAtIndex:indexPath.row]];
[self.detailViewController changeProductText1:[adrese objectAtIndex:indexPath.row]];
[self.detailViewController changeProductText2:[laimigastunda objectAtIndex:indexPath.row]];
[self.detailViewController changeImage:[imageChange objectAtIndex:indexPath.row]];



}

} 无论我在这里改变什么,它都不起作用。

1 个答案:

答案 0 :(得分:0)

从您显示的代码中可以看出,您没有向detailViewController提供数据对象,而是直接设置值。

这不是这样做的方式,也可能是您遇到问题的原因。你需要掌握MVC的概念并回到它。

至少你应该这样做 1.在第一个视图中使用键@“teksti”,@“​​adrese”,@“longitude”,@ latitude“构建字典。 2.在DetailViewController中创建一个属性来保存字典。 3.更新显示DetailViewController时显示的值

因此,当您按下地图按钮时,您可以推送包含mapView的视图,并将地图设置为您拥有的纬度和经度。

所以它会这样做:

  NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:[teksti objectAtIndex:indexPath.row], @"teksti", [adrese objectAtIndex:indexPath.row], @"adrese", [latitude objectAtIndex:indexPath.row], @"latitude", [longitudes objectAtIndex:indexPath.row], @"longitude", nil];
  [detailViewController setDict:dict];

并在DetailViewController.m中:

  - (void)viewWillAppear:(BOOL)animated{
  [self changeProductText:[dict objectForKey:@"teksti"]];
  .... And so on
  }

您的代码将为您提供更多详细信息。