Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 要在拖动时将其项目保留在原来的位置_Swift_Drag And Drop_Nscollectionview_Nsdraggingitem - Fatal编程技术网

Swift 要在拖动时将其项目保留在原来的位置

Swift 要在拖动时将其项目保留在原来的位置,swift,drag-and-drop,nscollectionview,nsdraggingitem,Swift,Drag And Drop,Nscollectionview,Nsdraggingitem,我制作了自定义的拖动图像,目前正在使用它 一个问题是,当我拖动项目时,项目的原点变成了空白 我想把原始图像(?)留在它的原点 所以我的收藏视图看起来什么都没发生。(当然,在拖动的鼠标指针下有自定义图像。) 请给我一个提示 多谢各位 很难通过文字来解释,所以我画了一幅画XD 更新 我的解决方案 继承NSCollectionView以覆盖func BegindragingSession(带有项:[nsDragginItem],事件:NSEvent,源:nsDragginSource)->nsDra

我制作了自定义的拖动图像,目前正在使用它

一个问题是,当我拖动项目时,项目的原点变成了空白

我想把原始图像(?)留在它的原点

所以我的收藏视图看起来什么都没发生。(当然,在拖动的鼠标指针下有自定义图像。)

请给我一个提示

多谢各位

很难通过文字来解释,所以我画了一幅画XD

更新 我的解决方案

  • 继承NSCollectionView以覆盖
    func BegindragingSession(带有项:[nsDragginItem],事件:NSEvent,源:nsDragginSource)->nsDragginSession
  • 获取选定的索引
  • 在循环所选索引时,在索引处生成NSDraggingItem并替换来自方法arg内容的项。此时,如果您制作一个图像并使用
    setDraggingFrame
    拖动进行设置,则鼠标指针下的图像将是您的图像(我没有测试其他方法),并且collectionView将与拖动之前相同
  • 更新2

    我再次阅读代码,发现解决方案其实很简单。(但我认为这不是推荐的解决方案…)


    你需要自己计算哪些信息需要删除和删除。

    你的问题有点让人困惑。你有一些代码来帮助我们知道你尝试了什么吗?因为英语不是我的第一语言。。。所以我把我的画放在这里。:)抱歉给您带来不便没关系,无意冒犯。让我们有建设性的。。。(1) 你说的是拖拽一个图像并留下一个“空白点”——你是什么意思?通常,“拖动”意味着“移动”或“重新定位”。是否要将图像“复制”到第二个位置?(2) 另一个让人困惑的地方是你提到的“收集视图”。这些图像是否在UICollectionView中?是否尝试在集合视图中对单元格重新排序?(3) 编辑:我刚刚意识到你试图附加一个图像-它不起作用。好的。我得到一个暗示。当我写“我知道那个东西在那个里”的时候。我想,如果我从“BegindAgingSession(with:event:source:)”调用“reloadData”,会怎么样。它将再次绘制所有项目,包括正在拖动的项目,我希望。这似乎奏效了。(我需要确保没有副作用。)@Wes我更新了我的解决方案,希望这个解决方案能帮助你。你的问题有点让人困惑。你有一些代码来帮助我们知道你尝试了什么吗?因为英语不是我的第一语言。。。所以我把我的画放在这里。:)抱歉给您带来不便没关系,无意冒犯。让我们有建设性的。。。(1) 你说的是拖拽一个图像并留下一个“空白点”——你是什么意思?通常,“拖动”意味着“移动”或“重新定位”。是否要将图像“复制”到第二个位置?(2) 另一个让人困惑的地方是你提到的“收集视图”。这些图像是否在UICollectionView中?是否尝试在集合视图中对单元格重新排序?(3) 编辑:我刚刚意识到你试图附加一个图像-它不起作用。好的。我得到一个暗示。当我写“我知道那个东西在那个里”的时候。我想,如果我从“BegindAgingSession(with:event:source:)”调用“reloadData”,会怎么样。它将再次绘制所有项目,包括正在拖动的项目,我希望。这似乎奏效了。(我需要确保没有副作用。)@Wes我更新了我的解决方案,希望此解决方案能帮助您。
    override func beginDraggingSession(with items: [NSDraggingItem], event: NSEvent, source: NSDraggingSource) -> NSDraggingSession {
        //...
        // reload your table data again here
        return super.beginDraggingSession(with: newItems, event: event, source: source)
    }