Uitableview 将MkMapView移动到TableViewCell后,SetRegion停止工作
我创建了一个从TableViewCell派生的自定义tableCell。它仅包含作为MkMapView的on属性 在ViewDidLoad中,我这样做了 `-(无效)viewDidLoad { [超级视图下载] //访问地图视图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
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中。