【问题标题】:Drag a cell from 1 table view and drop it onto a cell in a 2nd table view to invoke segue从 1 个表格视图中拖动一个单元格并将其放到第二个表格视图中的一个单元格上以调用 segue
【发布时间】:2015-12-24 17:04:57
【问题描述】:

我试图通过将一个表格中的一个单元格拖放到另一个表格单元格上,在一个控制器内实现两个表格之间的视觉交互。当一个被拖拽的单元格接触到另一个单元格时,一个segue将被调用到另一个控制器。

更详细的描述:UIViewController 中有两个标准的 UITableView,它们都使用自定义 UITableViewCell 类在单元格中显示数据(就它的作用而言没有什么特别的) - 每个单元格都显示一个图标、名称和价格。两张桌子并排放置,而不是一个在另一个之上。

所有这些的目的是让用户点击一个单元格以在点击的位置创建某种视图对象(代表点击的单元格的东西)并将其拖动到另一个表视图。拖动的对象只能放在另一个单元格上。这不会将拖动的对象添加到另一个表中;该对象只能与它被拖放的单元格交互以调用另一个控制器的segue(对拖动的“单元格”的数据和接触的单元格的数据做一些事情)。

我在这个问题上坐了一段时间,试图弄清楚。我尝试过使用 touchesBegan 和 UIGestureRecognizers,但我什至无法在单元格“touchdown”时创建一些视图对象('didSelectRowAtIndexPath' 是没用的,因为它只有在手指抬起时才会被调用......哪个 null 是拖动的能力) .请指出正确的方向或如何解决此问题。

【问题讨论】:

    标签: objective-c uitableview drag-and-drop


    【解决方案1】:

    关于你提到的那个 touchDouwn 事件,你可以这样做:
    -(id)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    //init the cell "foo"
    UIButton * bar = [[UIButton alloc] initWithFrame:CGRectMake(0,0,foo.frame.size.width, foo.frame.size.height);
    [bar addTarget:self action:@selector(gotATouchDown:) forControlEvents:UIControlEventTouchDown];
    
    bar.tag = indexpath.row; //use this to know where touchDown happend
    
    [foo addSubview:bar]; 
    

    现在是选择器函数

    -(void)gotATouchDown:(UIButton*)sender{
        NSLog(@"I just touched row nr %ld ",sender.tag);
    }
    

    不知道下一步该怎么做,一旦我弄清楚我会完成我的答案。

    【讨论】:

    • 喂!非常感谢。这已经让我朝着正确的方向前进。我要再等一会儿,以防有人有解决方案的另一部分。如果没有,我会“勾选”这个答案。
    • 您是否尝试过将UIControlEventTouchDragEnter 用于第二个视图中的单元格?
    • 我已经将它应用到我的按钮上,但不知道如何使用它。
    • 我还没有尝试过,但是从文档中可以看出,一旦您在按钮上拖动某些东西,它就会触发,因此它应该有助于“放置”部分。 (拖放)
    • 我终于找到了一个mac,并且snap,没有可用于丢弃的控制事件,但是有THIS,如果有帮助请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    • 1970-01-01
    相关资源
    最近更新 更多