【问题标题】:SetRegion stops working after I move MkMapView into a TableViewCell将 MkMapView 移动到 TableViewCell 后,SetRegion 停止工作
【发布时间】: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 上的任何注释。

有没有人发现过这样的问题?

【问题讨论】:

    标签: uitableview ios7 mkmapview


    【解决方案1】:

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

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

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

    【讨论】:

    • 非常感谢@Timothy。你摇滚。我实际上所做的是在 ViewDidLoad 侧实例化 MkMapView 并将其添加到 cellForRowAtIndexPath 中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多