如何将集合视图单元格从1拖放到另一个uicollectionview

时间:2015-10-14 19:36:12

标签: ios objective-c uitableview uicollectionviewcell uipangesturerecognizer

这里的情景。

我有一个UITableView With Multiple Section。每个部分包含精确的1行。 每行包含UICollectionView

----------------------------------
TablViewSection 1
----------------------------------
|--------------| |--------------|
|  Collection  | |  Collection  |
|   View Cell  | |   View Cell  |
|--------------| |--------------|

----------------------------------
TablViewSection 2
----------------------------------
|--------------| |--------------|
|  Collection  | |  Collection  |
|   View Cell  | |   View Cell  |
|--------------| |--------------|

这就是它的样子。

这很完美。

但这是我想要做的:我想将第一部分的CollectionViewCell拖到第二部分UICollectionView

我在PanGesture上应用了CollectionViewCell,而下面是panGesture的选择器方法。使用下面的代码,我可以拖动集合视图单元格,但无法删除到第二部分的集合视图。

-(void)handlePan:(UIGestureRecognizer *)panRecognizer {

    UICollectionView *collectionViewRef =   [[panRecognizer view] superview];

    CGPoint locationPoint = [panRecognizer locationInView:[[panRecognizer view] superview]];

    UICollectionViewCell *cellRef = [panRecognizer view];

    if (panRecognizer.state == UIGestureRecognizerStateBegan) {

        NSIndexPath *indexPathOfMovingCell = [collectionViewRef indexPathForItemAtPoint:locationPoint];
        UICollectionViewCell *cell = [collectionViewRef cellForItemAtIndexPath:indexPathOfMovingCell];

        UIGraphicsBeginImageContext(cell.bounds.size);
        [cell.layer renderInContext:UIGraphicsGetCurrentContext()];
        UIImage *cellImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
    }

    if (panRecognizer.state == UIGestureRecognizerStateChanged) {
    //        [self.movingCell setCenter:locationPoint];
              [cellRef setCenter:locationPoint];
    }

    if (panRecognizer.state == UIGestureRecognizerStateEnded) {
    //        [self.movingCell removeFromSuperview];
              [cellRef removeFromSuperview];
    }
}

1 个答案:

答案 0 :(得分:0)

编辑:我的回答有点晚,但如果这对某人有帮助就可能很棒!

我有一天做完了,而且很难......

您需要做类似的事情:

CGRect frame = [self.collectionView convertRect:draggedCell.frame toView:self.view];

将拖动的单元格的点转换为父视图,然后计算屏幕上的位置。

之后,您需要将单元格的数据复制/粘贴到新位置。

希望这对我们有所帮助。

如果我错了或者我误解了这个问题,请不要犹豫,让我知道。