将 MkMapView 移动到 TableViewCell 后,SetRegion 停止工作
Posted
技术标签:
【中文标题】将 MkMapView 移动到 TableViewCell 后,SetRegion 停止工作【英文标题】:SetRegion stops working after I move MkMapView into a TableViewCell 【发布时间】:2013-12-03 12:02:27 【问题描述】:我创建了一个从 TableViewCell 派生的自定义 tableCell。它只包含一个 MkMapView 属性。
在 ViewDidLoad 中我这样做了。
`- (void)viewDidLoad [超级viewDidLoad];
//访问mapView
MapViewTableCell *mapViewCell = [[self tableView] dequeueReusableCellWithIdentifier:@"MapViewCell"];
self.mapView = mapViewCell.mapView;
self.mapView.delegate = self;
`
在这个 tableViewCell 下我有这个
@property (nonatomic, strong) MKMapView *mapView;
所以在其余代码中,我访问 mapView 的方式与访问它的方式相同,即 self.mapView
。
但在那之后我发现虽然通过 NSLog 我看不出我的 self.mapView 对象有什么问题,但它的 setRegion 根本不起作用,我无法再更新 mapView 上的任何注释。
有没有人发现过这样的问题?
【问题讨论】:
【参考方案1】:当您将cellForRowAtIndexPath
之外的单元格出列时,正如您在viewDidLoad
方法中所做的那样,该单元格不会被所有重用,因为表格视图没有管理它的生命周期。因此,在您的 cellForRowAtIndexPath
中,您将获得一个新的“MapViewCell”实例。
假设您的表格中只有一个地图视图,您最好的选择是执行以下操作之一:
-
在视图控制器和
cellForRowAtIndexPath
中实例化地图视图,将其添加到单元格中。
无需将地图视图单元格出列,只需实例化一个您在视图控制器和cellForRowAtIndexPath
中保留引用的单元格,始终返回该单元格。
【讨论】:
非常感谢@Timothy。你摇滚。我实际上所做的是在 ViewDidLoad 侧实例化 MkMapView 并将其添加到 cellForRowAtIndexPath 中。以上是关于将 MkMapView 移动到 TableViewCell 后,SetRegion 停止工作的主要内容,如果未能解决你的问题,请参考以下文章
在 tableview 单元格中有 MKMapview 时 UITableView reloaddata 问题
如何将 MKCircleView 的一个位置移动到 MKMapView 中的另一个位置?
iOS - 当我将方法移动到另一个类时,MKMapView 覆盖不会呈现