从1表视图中拖动单元格并将其放到第2个表视图中的单元格上以调用segue

时间:2015-12-24 17:04:57

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

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

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

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

我已经坐了一会儿这个问题,试图解决这个问题。我尝试过使用touchesBegan& UIGestureRecognizers,但我甚至无法在单元格“触地”上创建一些视图对象('didSelectRowAtIndexPath'是无用的,因为只有当手指被抬起时才会被调用...这是null的拖动能力)。请指出正确的方向或如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

关于你提到的touchDouwn事件,你可以通过这样做来实现:
LOGGING = { 'version': 1, 'disable_existing_loggers': True, 'formatters': { 'standard': { 'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s' }, }, 'handlers': { 'default': { 'level': 'DEBUG', 'class': 'logging.handlers.RotatingFileHandler', 'filename': 'logs/mylog.log', 'maxBytes': 1024 * 1024 * 5, # 5MB 'backupCount': 5, 'formatter': 'standard' }, 'request_handler': { 'level': 'DEBUG', 'class': 'logging.handlers.RotatingFileHandler', 'filename': 'logs/django_request.log', 'maxBytes': 1024 * 1024 * 5, # 5MB 'backupCount': 5, 'formatter': 'standard' }, }, 'loggers': { '': { 'handlers': ['default'], 'level': 'DEBUG', 'propagate': True }, 'django.request': { 'handlers': ['request_handler'], 'level': 'DEBUG', 'propagate': False }, } }
DO

-(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]; 

不知道下一步该做什么,一旦我搞清楚,我就会完成答案。