在ipad中的两个表之间拖放

时间:2010-10-12 12:06:23

标签: uitableview

我的iPad应用程序中有两个UITableView。 我想从一个tableview拖动一个单元格并放到另一个tableview上。 请告诉我任何想法如何实施drag& amp;在iPad中的两个桌子之间掉线?

提前致谢

4 个答案:

答案 0 :(得分:2)

我之前已经实现了a solution

方法

  • 解决方案的主要组成部分是侦听拖放事件并将其广播给委托的类;我将此组件称为gesture coordinator。它处理从UIGestureRecognizer发出的事件以计算“拖放”状态并通知代理。
  • 例如,作为其委托的视图控制器将接收有关何时在集合之间交换项目的消息,然后更新其集合视图和数据源。
  • 手势协调员基本上只是UIGestureRecognizer的拖放装饰器。

手势协调员逻辑

以下是我在实施手势协调员时考虑的主张:

  
      
  • 集合是包含子项目和数组的视图。
  •   
  • 拖动竞技场由超级视图和一组有序的集合组成,这些集合作为该超级视图中的子视图存在。
  •   
  • 拖动区域中集合的顺序决定了它们的拖放优先级。也就是说,如果一个集合位于拖动竞技场的有序集合的开头,那么该集合上发生的拖放将被识别,而不是集合中的任何后续集合。
  •   
  • 当且仅当在拖动区域中的集合的可拖动项目的范围内启动手势时,才会启动拖动。   当且仅当在拖动开始后,手势的位置在拖动区域内发生变化时才会发生拖动。
  •   
  • 当且仅当拖动手势后立即停止,取消或结束时,拖动停止。
  •   
  • 当且仅当拖动停止在指定为可删除的点时,才会发生删除。例如,用户可以将拖动区域内的某些边界指定为“删除时删除”区域。
  •   
  • 当且仅当拖动停止在其开始的集合的边界内,在该集合中指定为可重新排列的另一个项目以及未指定的拖动领域中的点上时,才会发生重新排列。可以删除。
  •   
  • 当且仅当拖动停止在拖动竞技场中的另一个集合的边界内,在该集合中指定为droppable的特定项目或点以及拖动竞技场中的一个点上时,才会发生丢弃指定为可删除。
  •   

参考

答案 1 :(得分:1)

触摸一个表格中的一行后..您必须创建要拖动的行的图像

  
    

这可以通过编辑didSelectRowAtIndexPath函数来实现,您可以从中实际确定选择了哪一行。

  

然后将图像与拖动一起移动(通过触摸的自定义实现:移动)

  
    

CGPoint gesturepoint = [touch locationInView:self.view];

         

imageview.centre = gesturepoint;

  

答案 2 :(得分:1)

现在您可以通过iOS11中的UITableView的dragDelegate和dropDelegate来完成此帮助

答案 3 :(得分:0)

几个步骤:

  1. 添加长按手势识别器,当检测到它时,从您按下的单元格中获取UIImage。
  2. 从tableview中删除单元格(deleteRowsAtIndexPaths:withRowAnimation :)。通过步骤1获得的UIImage创建UIImageView。移动手指时移动UIImageView。
  3. 当手势结束时,决定要删除的tableview和要插入的位置。然后将所选数据添加到数据源(insertRowsAtIndexPaths:withRowAnimation:)。