2010-01-12 90 views
1

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

底部是一个单元格,显示一个具有MKMapView的自定义单元格。这个单元格用于可视化这个特定信息记录的位置。我想该小区为可编辑“代替”:

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

我我不知道如何着手:

  • 在哪里设置状态改变时,该单元变成可编辑的(从固定到滚动)
  • 如何UPD新位置设置时,是否吃下了实体?

回答

1

将滚动视图置于另一个视图内可能会非常棘手。 MKMapView不是一个真正的滚动视图(即它不从UIScrollView下降),但我不知道这会帮助你。我建议从TableView中移除MKMapView,因为解析它与TableView之间的接触会变得很冒险。

+0

我禁用了表格视图的滚动功能,并且工作得很好。 我真的不知道这是否是这样做的,但对我来说,可视化和编辑位置属性的方法是显示地图视图。 – mvexel 2010-01-12 14:49:10

+2

如果你没有在表格中使用滚动,那你为什么要使用表格?为什么不只是两个单独的视图,一张桌子和一张地图? – 2010-01-12 15:17:54

+0

好点...谢谢本。 – mvexel 2010-01-12 15:19:58

0

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

+1

我想要在表视图内的地图视图,因为位置是我想要可视化的对象的关键属性。 感谢您对userInteractionEnabled提示 - 我试图使用scrollEnabled,我不知道工程。 – mvexel 2010-01-12 14:50:39

0

我觉得它的一半。在定制单元上切换用户交互只是在UITableViewCell子类中放置

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

的问题。

对于位置,我会尝试在

mapView:regionDidChangeAnimated: 

事件发布的通知。我会告诉你,如果解决了。

+0

你这样做了吗?我发现它可以正常工作,直到你疯狂地向上和向下滑动表格,并且它有时会与旧的EXC_BAD_ACCESS一起崩溃。 – 2010-11-08 22:32:16

+0

我不记得我是如何最终解决这个问题的,恐怕。你确定你没有过度释放吗? – mvexel 2010-11-09 16:11:58

0

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

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

此外请确保禁用tableView滚动,或者有点混淆哪一个应该滚动。