MKMapView在UITableView和编辑中

时间:2010-01-12 14:25:21

标签: iphone cocoa-touch uitableview mkmapview

我有一个UITableView,其中有两个部分需要可编辑。第一部分是一些具有文本,数字和日期内容的单元格,它们提供了一个单独的视图控制器,用于编辑值。

底部是jst一个单元格,显示一个具有MKMapView的自定义单元格。此单元用于显示此特定信息记录的位置。我希望这个单元格可以“就地”编辑:

  • MKMapView变得可滚动
  • 地图的中心(用十字准线表示)是(新)位置

我不确定如何继续:

  • 当单元格可编辑(从固定到可滚动)时,在何处设置状态更改
  • 如何设置新位置时更新基础实体?

4 个答案:

答案 0 :(得分:1)

将滚动视图放在另一个内部可能会非常棘手。 MKMapView不是真正的scrollview(即,它不是来自UIScrollView),但我不确定它会对你有所帮助。我建议从TableView中删除MKMapView,因为解析它与TableView之间的接触会变得有点冒险。

答案 1 :(得分:0)

我不完全确定你想要得到什么,但为什么你需要将MKMapView放在UITableViewCell里面?
您可以通过更改其userInteractionEnabled属性来启用/禁用mapview上的滚动。设置新位置后,您只需更新mapView的可见区域(使用-setCenterCoordinate:或--setRegion:methods) - 因此无需使用UITableView的方法。

答案 2 :(得分:0)

我想出了一半。在自定义单元格上切换用户交互只需要放置

- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:animated];
    [self.mapView setUserInteractionEnabled:editing];
}

在UITableViewCell子类中。

对于该位置,我将尝试在

上发布通知
mapView:regionDidChangeAnimated:

事件。如果成功,我会告诉你的。

答案 3 :(得分:0)

我有同样的问题:在自定义UITableViewCell中嵌入MKMapView。

经过一个下午的嘲笑,我很幸运地找到了解决方案。就我而言,解决方案最终非常简单。问题是由于我的自定义tableView中定义的单元格高度heightForRowAtIndexPath :( NSIndexPath *)indexPath对于MKMapView而言太短。你不会知道它的外观。实际上,您可以定义一个比heightForRowAtIndexPath中定义的更高的自定义tableview单元格视图。猜猜看,外观将由自定义表格视图单元格的视图高度决定。但它不会正常工作。超出此范围的区域在heightForRowAtIndexPath中定义,不响应任何用户交互。这就是为什么我的MKMapView在嵌入tableview单元格时不可缩放或可移动的原因。这是一个编译器错误,我希望Apple能解决。

还要确保禁用tableView滚动,否则应该滚动哪一个令人困惑。