将 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 覆盖不会呈现

当用户移动地图时,停止 MKMapView 移动到用户的当前位置

MKMapView 自动移动注释 - 为它们设置动画?

MKMapView 不移动和缩放到搜索结果