gpt4 book ai didi

ios - 如何在 Interface Builder 中使用 RMMapView?

转载 作者:行者123 更新时间:2023-11-29 12:47:20 25 4
gpt4 key购买 nike

我正在使用 Mapbox iOS SDK 在我的 iOS 应用程序中显示离线 OpenStreetMaps 数据。我已经成功地以编程方式完成了这项工作,但现在我想使用 Interface Builder 来完成这项工作。为此,我使用 .xib 文件创建了 UIViewController 的子类,并将 UIView 放入 xib 的主视图中。然后在身份检查器中,我将此 View 的自定义类更改为 RMMapView,并将 IBOutlet 放入 UIViewController 的 header 中,并将其与 xib 中的自定义 RMMapView 对象连接。

@property (weak, nonatomic) IBOutlet RMMapView *mapView;

到目前为止,我认为这应该是正确的。当我启动应用程序时,RMMapView 在 Nib 中创建并显示默认行为,即它显示带有“示例”水印的 map 。因此,我需要设置适当的 tilesource,到目前为止,我是在 ViewController 的 viewDidLoad 方法中这样做的,比如

 RMMBTilesSource *tileSource = [[RMMBTilesSource alloc] initWithTileSetResource:@"mymap" ofType:@"mbtiles"];

其次是

[self.mapView setTileSource:tileSource]

或者替代地

[self.mapView addTileSource:tileSource] 

但是,即使在这些调用之后,mapView 的 RMTileSourcesContainer 的值仍然为 nil,据我所知,set/addTileSource 调用实际上没有任何效果。在我看来,问题在于 RMMapView 中的 initWithCoder 尚未被覆盖,因此 RMMapView 未通过 Nib 正确初始化,最重要的是 RMTileSourcesContainer 未初始化。真的是这样吗?为什么 initWitCoder 没有被覆盖?我应该如何在 Interface Builder 中使用 RMMapView ?感谢您的帮助!!

最佳答案

您想在 -viewWillAppear: 或更高版本中尝试此操作,而不是 -viewDidLoad。由于 RMMapView 基于 UIScrollView 的方式, map View 需要添加到实时 View 层次结构才能设置其参数。

关于ios - 如何在 Interface Builder 中使用 RMMapView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23333923/

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