我创建了一个派生自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上的任何注释。
以前有人发现过这样的问题吗?
答案 0 :(得分:1)
当您在cellForRowAtIndexPath
方法之外将单元格出列时,正如您在viewDidLoad
方法中所做的那样,该单元格将不会重复使用每个单元格,因为表格视图不管理它的生命周期。因此,在cellForRowAtIndexPath
中,您将获得一个新的“MapViewCell”实例。
假设您的表中只有一个地图视图,最好的办法是执行以下操作之一:
cellForRowAtIndexPath
中将其添加到单元格中。cellForRowAtIndexPath
中实例化一个您保留引用的单元格,而是始终返回该单元格。