2014-03-14 52 views
0

我只是一个相对较新的iPhone程序员,所以希望这是有道理的。快速加载MKITView到UITableViewCell

我在storyboard中创建了UITableView,并且显示正确。我创建了两种不同类型的原型表格视图单元格。一个只是一个简单的单元格,使用“Left Detail”风格显示文本,另一个单元格包含MKMapView和一个工具栏。我创建了一个地图的单个实例,其余所有单元都是简单的文本单元格。

我遇到的问题是当表格视图最初显示时,包含地图的UITableViewCell不在屏幕上。当我向下滚动时,用户界面在单元格加载时暂停。基于仪器,似乎时间花在[MKMapView initWithCoder]上,但我不知道有什么方法在离开它之前加载原型单元。

以前地图单元格是在折叠之前,所以在我做任何滚动之前加载。现在我已经重新安排了一些东西,它稍后加载并导致延迟。

有没有什么办法可以预先加载包含MKMapViewUITableViewCell,或者将MKMapView加载到背景中?

+0

是地图用户迭代?你的目标> = 7.0,还是你也支持6? – n00bProgrammer

+0

地图是用户交互式的。此外,它目前实际上只是一个个人项目,所以目前的目标是大于等于7.0,但如果我看到需求可能会有所改变。 –

+0

另外,我确实注意到,当我在设备上独立运行应用程序时,性能几乎可以接受。当我使用Xcode调试器运行它时,速度变慢更加明显。 –

回答

2

您可以在之前预先加载MKMapView视图实例,将其作为子视图添加到cellForRowAtIndexPath方法中的单元格中。这样地图视图在显示单元格之前有一段时间才能加载。

+0

这是否意味着我应该从原型单元格中移除MKMapView,并在将其显示在cellForRowAtIndexPath中时将它添加进去?另外,如果我创建地图,它将不会显示,直到我真正调用addSubview?我昨天在这条路上取得了一些进展,但还没有完成我的改变。 –

+0

@Mike是的..我猜你只有一个地图视图来显示,这种方法适用于此。我不知道地图视图不加载,直到它被添加为子视图。如果是这样的话,那么你暂时将它作为子视图添加到一些不可见的小框架大小的视图中。稍后,您可以将其切换到一个你的单元格。 – Adithya

+0

感谢您的帮助。现在似乎更快一点。我花了一段时间才弄清楚了代码,所以对于慢速响应感到抱歉。 –