我有一个带有地图视图的应用程序,其中包含各种建筑对象(我自己的类)。每个建筑物都有一个注释属性,效果很好,用户可以在表格中搜索所需的建筑物,点击一个按钮,它将显示相关的注释。
现在我在注释上有一个标注按钮,该按钮调用一个方法(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 方法,但我如何才能得到正确的建筑呢?另外,现在我有了 DidSelectAnnotation,还需要我的 showDetails 方法吗?
我在想我可以修改 showDetails 方法,以便它接受 Building 类型的参数,然后我可以在 prepareForSegue 中提供 Building 详细信息,但如果有更好的方法我很想知道。
那么,最好的计划是什么?非常感谢