iphone – 单击DetailDesclosure按钮时,MKAnnotationView按下以查看控制器

iphone – 单击DetailDesclosure按钮时,MKAnnotationView按下以查看控制器,第1张

概述我想在我正在显示的地图上单击DetailDisclosure时切换视图.我目前的代码如下: - (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control{ DetailViewControlle 我想在我正在显示的地图上单击Detaildisclosure时切换视图.我目前的代码如下:

- (voID)mapVIEw:(MKMapVIEw *)mapVIEw annotationVIEw:(MKAnnotationVIEw *)vIEw calloutAccessoryControlTapped:(UIControl *)control{    DetailVIEwController *detailVIEwController = [[DetailVIEwController alloc]     initWithNibname:@"DetailVIEwController" bundle:nil];    detailVIEwController.Title = dictionary[@"placeLatitude"]    [self.navigationController pushVIEwController:detailVIEwController animated:YES];}

我可以用这个推送到视图控制器,但我还没想出如何强制它从用于生成地图的JsON数组中拉出细节.我正在拉这样的数据来生成地图:

for (NSDictionary *dictionary in array) {    // retrIEve latitude and longitude from the dictionary entry    location.latitude = [dictionary[@"placeLatitude"] doubleValue];    location.longitude = [dictionary[@"placeLongitude"] doubleValue];   //CAN I LOAD THE Title/ID OF THE LOCATION HERE?

我知道我有点偏离目标.也许只是向正确的方向踢一脚可能有所帮助.谢谢!

解决方法 如果您正在使用故事板并且从当前场景到目标场景有一个segue,则可以只响应calloutAccessoryControlTapped.例如:

- (voID)mapVIEw:(MKMapVIEw *)mapVIEw annotationVIEw:(MKAnnotationVIEw *)vIEw calloutAccessoryControlTapped:(UIControl *)control{    [self performSegueWithIDentifIEr:@"Details" sender:vIEw];}

显然,如果您要为不同的注释类型调用不同的segue,则可以检查与该视图关联的注释类型等.

当然,如果你想像往常一样将任何信息传递给prepareForSegue中的下一个场景.

- (voID)prepareForSegue:(UIStoryboardSegue *)segue sender:(ID)sender{    if ([segue.IDentifIEr isEqualToString:@"Details"])    {        MKAnnotationVIEw *annotationVIEw = sender;        [segue.destinationVIEwController setAnnotation:annotationVIEw.annotation];    }}

如您所见,我将注释对象传递给下一个视图.如果JsON结构中有与每个注释关联的其他字段,则一个简单的解决方案是将属性添加到与要跟踪的每个字段关联的自定义视图中.只需转到.h作为注释自定义类并添加所需的属性.然后,当您创建自定义注释(要添加到地图)时,也可以设置这些属性.然后,当您将此注释传递给下一个视图控制器时,所有所需的属性都将在那里可用.

显然,如果您正在使用NIB,只需执行任何您想要的NIB等效实例化下一个视图控制器,设置您想要的任何属性,并推送到它或以模态方式呈现它,例如:

- (voID)mapVIEw:(MKMapVIEw *)mapVIEw annotationVIEw:(MKAnnotationVIEw *)vIEw calloutAccessoryControlTapped:(UIControl *)control{    DetailsVIEwController *controller = [[DetailsVIEwController alloc] initWithNibname:nil                                                                                bundle:nil];    controller.annotation = annotationVIEw.annotation;    [self.navigationController pushVIEwController:controller animated:YES]; // or use presentVIEwController if you're using modals}
总结

以上是内存溢出为你收集整理的iphone – 单击DetailDesclosure按钮时,MKAnnotationView按下以查看控制器全部内容,希望文章能够帮你解决iphone – 单击DetailDesclosure按钮时,MKAnnotationView按下以查看控制器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1060448.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存