从1个表视图拖动一个单元格,然后将其放到第二个表视图中的一个单元格上,以调用segue



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

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

所有这些的目的是让用户点击一个单元格,在点击的位置创建某种视图对象(代表点击的单元格的东西),并将其拖动到另一个表视图。拖动的对象只能放在另一个单元格上。这不会将拖动的对象添加到另一个表中;对象只能与它被拖动的单元格交互&切换到另一个控制器调用segue(对拖动的"单元格"的数据和联系的单元格的数据做一些处理)。

我对这个问题已经思考了一段时间,试图弄清楚它。我试过使用触摸Began&UIGestureRecognizers,但我甚至无法在单元格"触地"时创建一些视图对象("idSelectRowAtIndexPath"是无用的,因为它只有在手指抬起时才会被调用…null是拖动的能力)。请给我指明正确的方向或如何解决这个问题。

关于您提到的touchDoown事件,您可以通过以下操作实现:
-(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);
}

不知道下一步该做什么,一旦我想好了,我就会完成我的答案。

相关内容

最新更新