Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS:如何根据点击的注释在地图视图中加载对象?_Ios_Annotations_Android Mapview_Master Detail_Uicontrol - Fatal编程技术网

iOS:如何根据点击的注释在地图视图中加载对象?

iOS:如何根据点击的注释在地图视图中加载对象?,ios,annotations,android-mapview,master-detail,uicontrol,Ios,Annotations,Android Mapview,Master Detail,Uicontrol,我有一个带有mapview的应用程序,其中包含各种建筑对象(我自己的类)。每个建筑都有一个注释属性,所有这些都非常有效,用户可以在表格中搜索所需的建筑,点击一个按钮,它将显示相关的注释 现在我在注释上有一个callout按钮,它调用一个方法(showDetails),该方法将一个segue推送到DetailViewController,但是我遇到的问题是如何将正确的建筑传递到这个DetailViewController。所有建筑物都存储在数据控制器的一个数组中,如果可能的话,我想从中加载一个 到

我有一个带有mapview的应用程序,其中包含各种建筑对象(我自己的类)。每个建筑都有一个注释属性,所有这些都非常有效,用户可以在表格中搜索所需的建筑,点击一个按钮,它将显示相关的注释

现在我在注释上有一个callout按钮,它调用一个方法(showDetails),该方法将一个segue推送到DetailViewController,但是我遇到的问题是如何将正确的建筑传递到这个DetailViewController。所有建筑物都存储在数据控制器的一个数组中,如果可能的话,我想从中加载一个

到目前为止,我使用了controlWasTapped方法,其中我简单地说:

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control

for (Building* theBuilding in self.datacontroller.masterArray){
if(theBuilding.name isEqualToString:view.annotation.title){
    NSLog(@"theBuilding's name %@", theBuilding.name);
}
}
这工作正常,并返回正确的建筑,但如何将其发送到DetailViewController,我感到困惑。我有一个PrepareForSegue方法,但如何才能找到正确的建筑?另外,既然我已经完成了SelectAnnotation,是否需要我的showDetails方法

我在想我可以修改showDetails方法,这样它就需要一个建筑类型的参数,然后我可以在prepareForSegue中提供建筑细节,但如果有更好的方法,我很想知道


那么,最好的计划是什么?非常感谢

在包含您发布的代码的类中声明一个实例变量

Building *buildingOfInterest;
然后

然后:

在目标视图控制器的头文件中:

@interface MyBuildingVC : UIViewController
@property (strong) Building * building;
@end
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
     if ([[segue identifier] isEqualToString:@"ShowBuildingSegue"])
         ((MyBuildingVC *)segue.destinationViewController).building = buildingOfInterest;
}
@interface MyBuildingVC : UIViewController
@property (strong) Building * building;
@end