1

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

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

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

我不确定如何进行:

  • 单元格变为可编辑时在哪里设置状态更改(从固定到可滚动)
  • 设置新位置后如何更新基础实体?
4

4 回答 4

1

将滚动视图放在一起可能会很棘手。MKMapView 不是真正的滚动视图(即,它不是从 UIScrollView 下降的),但我不确定这是否会对您有所帮助。我建议从 TableView 中删除 MKMapView,因为解析它和 TableView 之间的接触会变得很冒险。

于 2010-01-12T14:39:09.667 回答
0

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

于 2010-01-12T14:32:53.917 回答
0

我想通了一半。在自定义单元格上切换用户交互只是一个问题

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

在 UITableViewCell 子类中。

对于位置,我将尝试在

mapView:regionDidChangeAnimated:

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

于 2010-01-12T15:18:56.430 回答
0

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

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

还要确保禁用 tableView 滚动,否则应该滚动哪个会让人感到困惑。

于 2010-03-05T02:59:56.153 回答