在UITableView中使用时,MKMapView会阻塞主线程

JAH*_*lia 5 iphone objective-c grand-central-dispatch mkmapview

我有一个UITableView包含20个单元格的基本单元,其中一个单元格是MKMapView刚刚放入的,没有任何自定义代码(不是偶数setRegion:Animated),如果我第一次打开视图并向下滚动表格视图(朝向地图的单元格) ,应用程序会发生明显的挂起,如果我使用setRegion:Animated(不丢弃任何引脚),挂起会变得更长.但是,主线程的这个块在以后尝试滚动到地图的单元格时消失.

我无法使用,MKSnapShotter因为我希望用户与地图进行交互,因此图像不符合要求.

如果映射不存在,表视图不会在主线程上生成任何块.

如何在第一次显示地图的单元格时避免阻塞主线程?

Man*_*ala 0

tableView如果您还没有这样做,请先创建一个IB 出口。在视图中创建单元格并使用它加载tableView.dequeueReusableCellWithIdentifier("mapCellIdentifier")并将其存储在 ivar 中。然后,当索引路径是您想要的路径时,在数据源中返回单元格,因此在cellForRowAtIndexPathdo中

if (indexPath.row == wantedRow) { 
    return mapCell 
}
Run Code Online (Sandbox Code Playgroud)

需要在您在地图的界面构建器中创建的单元格中设置mapCellIdentifier。这是假设您有动态单元格。