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

时间:2013-12-03 12:02:28

标签: uitableview ios7 mkmapview

我创建了一个派生自TableViewCell的自定义tableCell。它只包含属性是MkMapView。

在ViewDidLoad中,我做到了这一点。

` - (void)viewDidLoad {     [super viewDidLoad];

//访问mapView

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

}`

在这个表ViewCell下我有这个 @property (nonatomic, strong) MKMapView *mapView;

所以在其余的代码中,我通过访问map self.mapView的方式访问mapView。

但之后我发现尽管通过NSLog我看不到我的self.mapView对象有什么问题,但它的setRegion根本不起作用,我无法再更新mapView上的任何注释。

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

1 个答案:

答案 0 :(得分:1)

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

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

  1. 在视图控制器中实例化地图视图,然后在cellForRowAtIndexPath中将其添加到单元格中。
  2. 不是将地图视图单元格出列,而只是在视图控制器和cellForRowAtIndexPath中实例化一个您保留引用的单元格,而是始终返回该单元格。