UITableViewCell中的iPhone MKMapView

时间:2011-02-04 13:44:40

标签: iphone mkmapview

我的UITableView的每个单元格都必须显示一个带有注释的小型MKMapView。 我设法通过创建自定义Cell并在cellForRowAtIndexPath方法中配置其MKMapView来实现此目的。这些位置基于我之前构建的数组。

一切正常,但每次滚动UITableView时,MKMapView都会刷新。 是否可以“缓存”MKMapViews?

由于

4 个答案:

答案 0 :(得分:8)

您可以使用此处描述的方法缓存MKMapView的UIImage:Get map image from MKMapView

您应尽可能频繁地使用该UIImage,并仅在用户需要与其进行交互时显示实际地图。为了获得最佳性能,您可以尝试始终在tableview中使用UIImage,当用户点击该行时,加载实际地图(可能在其自己的视图控制器中)。

答案 1 :(得分:3)

您可能不应该在cellForRowAtIndexPath中配置地图视图,而是配置它们并将它们存储在viewDidLoad或awakeFromNib中的数组中。然后只需在cellForRowAtIndexPath中设置单元格的地图视图。

答案 2 :(得分:0)

使用@property在头文件中创建一个uitableview单元格全局对象,如果单元格为零,则将单元格指定给全局对象。

然后每次进入cellforrowatindexpath检查对象是否为nil。如果不是nil,则返回全局对象。

//在class.h中

@property (nonatomic, retain) UITableViewCell *mapCell;

//在cellForRowAtIndexPath

if (mapCell == nil) {
                        allocate the cell
                    }
                    else{
                        return mapCell;
                    }

答案 3 :(得分:0)

有一种更好的方法,使用MKMapSnapshotter从地图创建图像(在后台thead - 没有滞后!),手动添加引脚,然后您可以缓存图像并使其快速燃烧。我在这里提供了一些代码 - http://synappse.co/mkmapview-too-slow-use-preview/