我有一个 UITableView 有两个需要可编辑的部分。第一部分是一些包含文本、数字和日期内容的单元格,它们提供了一个单独的视图控制器来编辑值。
底部是一个显示自定义单元格的单元格,该单元格具有 MKMapView。此单元格用于可视化此特定信息记录的位置。我希望这个单元格可以“就地”编辑:
- MKMapView 变得可滚动
- 地图的中心(用十字线表示)是(新)位置
我不确定如何进行:
- 单元格变为可编辑时在哪里设置状态更改(从固定到可滚动)
- 设置新位置后如何更新基础实体?
我有一个 UITableView 有两个需要可编辑的部分。第一部分是一些包含文本、数字和日期内容的单元格,它们提供了一个单独的视图控制器来编辑值。
底部是一个显示自定义单元格的单元格,该单元格具有 MKMapView。此单元格用于可视化此特定信息记录的位置。我希望这个单元格可以“就地”编辑:
我不确定如何进行:
将滚动视图放在一起可能会很棘手。MKMapView 不是真正的滚动视图(即,它不是从 UIScrollView 下降的),但我不确定这是否会对您有所帮助。我建议从 TableView 中删除 MKMapView,因为解析它和 TableView 之间的接触会变得很冒险。
我不完全确定你想得到什么,但为什么你需要将 MKMapView 放在 UITableViewCell 中?
您可以通过更改其 userInteractionEnabled 属性来启用/禁用地图视图上的滚动。设置新位置后,您只需更新 mapView 的可见区域(使用-setCenterCoordinate:
或 - setRegion: 方法) - 因此无需为此使用 UITableView 的方法。
我想通了一半。在自定义单元格上切换用户交互只是一个问题
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated:animated];
[self.mapView setUserInteractionEnabled:editing];
}
在 UITableViewCell 子类中。
对于位置,我将尝试在
mapView:regionDidChangeAnimated:
事件。如果成功了,我会告诉你的。
我有同样的问题:在自定义 UITableViewCell 中嵌入一个 MKMapView。
经过一下午的嘲笑,我很幸运地找到了解决方案。就我而言,解决方案最终非常简单。问题是由于在我的自定义 tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 中定义的单元格高度对于 MKMapView 来说太短了。你不会从它的外观上知道。您实际上可以定义比在 heightForRowAtIndexPath 中定义的要高得多的自定义 tableview 单元格的视图。猜猜看,外观将由自定义表格视图单元格的视图高度决定。但它不会正常工作。超出此范围的区域在 heightForRowAtIndexPath 中定义,不响应任何用户交互。这就是为什么我的 MKMapView 在嵌入 tableview 单元格时不可缩放或不可移动的原因。这是一个编译器错误,我希望 Apple 能够修复。
还要确保禁用 tableView 滚动,否则应该滚动哪个会让人感到困惑。