我发誓我在文档中看到了一些关于此的内容,但找不到(因为我不确定要查找什么)。
基本上在我的应用程序中,第一个 VC 包含一个地图,用户可以在其中选择注释和每个注释按钮。否则,用户还可以选择一个按钮,该按钮将在地图上打开可搜索的建筑物表格并加载显示详细信息的视图控制器(基本上是主从设置)。
我想要做的是让标注加载该特定建筑物的指定路径。因此,如果我点击建筑物 A 上的标注,它会打开详细视图控制器以显示信息。
我该怎么做,或者哪些文档会有所帮助?
我发誓我在文档中看到了一些关于此的内容,但找不到(因为我不确定要查找什么)。
基本上在我的应用程序中,第一个 VC 包含一个地图,用户可以在其中选择注释和每个注释按钮。否则,用户还可以选择一个按钮,该按钮将在地图上打开可搜索的建筑物表格并加载显示详细信息的视图控制器(基本上是主从设置)。
我想要做的是让标注加载该特定建筑物的指定路径。因此,如果我点击建筑物 A 上的标注,它会打开详细视图控制器以显示信息。
我该怎么做,或者哪些文档会有所帮助?
通过阅读本文,听起来地图视图和表格视图属于同一个视图控制器。如果是这样,那么视图控制器就是要集中事物的地方。再次假设模型是一个数据对象数组,在控制器中有一个方法来完成协调不同视图的所有工作。
- (void)selectModelAtIndex:(NSUInteger)index sender:(id)sender
{
if (self.isSelectingModel)
return;
self.isSelectingModel = YES; // Stops recursive calls to -selectModelAtIndex:
NSIndexPath *indexPath = [self indexPathForModelAtIndex:index];
[self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone;
[self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionNon animate:NO];
MKAnnotation *annotation = [self annotationForModelAtIndex:index];
[self.mapView selectAnnotation:av.annotation animated:NO];
[self performSegueWithIdentifier:@"Identifier Of Detail View" sender:sender];
self.isSelectingModel = NO;
}
这是一个单一的方法,它在进入细节视图控制器之前保持 tableView 和 mapView 同步。您需要有一个isSelectingModel
属性-indexPathForModelAtIndex:
, 和-annotationForModelAtIndex:
。
此方法由表视图调用,并且地图视图确实选择了回调。