Uitableview 将MkMapView移动到TableViewCell后,SetRegion停止工作

Uitableview 将MkMapView移动到TableViewCell后,SetRegion停止工作,uitableview,ios7,mkmapview,Uitableview,Ios7,Mkmapview,我创建了一个从TableViewCell派生的自定义tableCell。它仅包含作为MkMapView的on属性 在ViewDidLoad中,我这样做了 `-(无效)viewDidLoad { [超级视图下载] //访问地图视图 MapViewTableCell *mapViewCell = [[self tableView] dequeueReusableCellWithIdentifier:@"MapViewCell"]; self.mapView = mapViewCell.mapView

我创建了一个从TableViewCell派生的自定义tableCell。它仅包含作为MkMapView的on属性

在ViewDidLoad中,我这样做了

`-(无效)viewDidLoad { [超级视图下载]

//访问地图视图

MapViewTableCell *mapViewCell = [[self tableView] dequeueReusableCellWithIdentifier:@"MapViewCell"];
self.mapView = mapViewCell.mapView;
self.mapView.delegate = self;
}`

在这个tableViewCell下面我有这个
@property(非原子,强)MKMapView*mapView

因此,在剩下的代码中,我访问mapView的方式与访问它的方式相同,即
self.mapView

但在那之后,我才发现,虽然通过NSLog我看不到self.mapView对象有任何错误,但它的setRegion根本不起作用,我无法再更新mapView上的任何注释


以前有人发现过这样的问题吗?

当您在
cellForRowAtIndexPath
之外的单元格中出列时,正如您在
viewDidLoad
方法中所做的那样,该单元格不会得到所有重用,因为表视图没有管理它的生命周期。因此,在您的
cellforrowatinexpath
中,您将获得一个新的“MapViewCell”实例

假设您的表中只有一个地图视图,最好执行以下操作之一:

  • 在视图控制器中实例化地图视图,并在
    cellForRowatingIndexPath
    中将其添加到单元格中
  • 不必将地图视图单元格排队,只需实例化一个在视图控制器和
    单元格forrowatinexpath
    中保留引用的单元格,始终返回该单元格

  • 非常感谢你,蒂莫西。你太棒了。我实际上是在side ViewDidLoad中实例化了MkMapView,并将其添加到CellForRowatineXpath中。