gpt4 book ai didi

ios - 如何在 Split View ipad 编程中实时在 MKMap 上添加引脚注释

转载 作者:行者123 更新时间:2023-12-01 17:01:11 27 4
gpt4 key购买 nike

我无法在 Split View基础的 Detailpane 中显示 MKMap 上的注释

我在主 Pane (左)(弹出框)中有表格,当我在主 Pane 中选择一行时,详细信息 Pane (右)应该有一个注释出现,但事实并非如此。

SecondViewController.m 中函数 didSelectRowAtIndexPath 中的代码

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
DetailViewController *dTVC = [[DetailViewController alloc] init];
Lat = 15.1025;
Long = 100.2510;
[dTVC setShowAnnotation];
}

注意 Lat 和 Long 是全局变量

DetailViewController.m 中函数 setShowAnnotation 中的代码
- (void)setShowAnnotation {
[_mapView removeAnnotation:self.customAnnotation];
self.customAnnotation = [[[BasicMapAnnotation alloc] initWithLatitude:Lat andLongitude:Long] autorelease];
[_mapView addAnnotation:self.customAnnotation];
}

当我选择行没有任何 react 时,我必须将函数 setShowAnnotion 链接到一个按钮,在选择行并且没有任何 react 之后,必须按下该按钮并且注释将出现。那么,我错过了什么?

最佳答案

可能它不起作用的主要原因是在 didSelectRowAtIndexPath ,您正在创建 DetailViewController 的新实例而不是使用已经显示的实例。

您创建的新实例也不会显示(呈现),因此即使 setShowAnnotation 可能正在工作,您也无法在屏幕上看到任何内容。

在标准的基于 Split View的应用程序中,左侧的主 Pane 称为 RootViewController(您称为 SecondViewController)。在标准模板中,已经有一个detailViewController ivar 指向当前显示的 DetailViewController 实例.

您可能希望使用标准模板从头开始重新启动您的应用程序,尽可能少地进行更改并使用预编码的功能。或者,使用标准模板创建一个新项目并研究其工作原理并相应地修改您的项目。

然后,在 didSelectRowAtIndexPath ,而不是创建 DetailViewController 的新实例, 只需调用 setShowAnnotation在 ivar 上:

[detailViewController setShowAnnotation];

我建议的另一件事是,不要使用全局变量将坐标“传递”到详细 View ,而是将纬度和经度作为参数添加到 setShowAnnotation。方法本身。

所以方法声明会是这样的:
- (void)setShowAnnotationWithLat:(CLLocationDegrees)latitude 
andLong:(CLLocationDegrees)longitude;

它会被这样调用:
[detailViewController setShowAnnotationWithLat:15.1025 andLong:100.251];

并摆脱全局变量。

关于ios - 如何在 Split View ipad 编程中实时在 MKMap 上添加引脚注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6813388/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com