如何自定义NSTableView的拖动session

how to customize the dragging session of NSTableView

我自定义了一个NSTableView,并自定义了基于红色背景色和图像的视图的cellview。

例如:

table实现方法:

-(void)tableView:(NSTableView *)tableView draggingSession:     (NSDraggingSession *)session willBeginAtPoint:(NSPoint)screenPoint     forRowIndexes:(NSIndexSet *)rowIndexes 

我想自定义拖动项只有图片没有背景颜色。 所以我写了这样的代码:

[session enumerateDraggingItemsWithOptions:NSDraggingItemEnumerationConcurrent
    forView:tableView
    classes:[NSArray arrayWithObject:[NSPasteboardItem class]]
    searchOptions:nil
    usingBlock:^(NSDraggingItem *draggingItem, NSInteger index, BOOL *stop) {
        [draggingItem setDraggingFrame:NSMakeRect(0, 0, StickerTableViewWidth, StickerTableViewHeight)
            contents:[NSImage imageNamed:imageName]];
}];

但实际上它并没有进入区块。

有人知道为什么吗?

我画红色底色的原因是 设计师要求我在单元格视图上绘制一个掩码视图以指示选定状态。 但是tableView也实现了拖动源,所以当我拖动cell的时候,mask view也被拖出来了。

然后我搜索了一下,发现我们可以使用 table 行视图来绘制选定状态。这样问题就解决了。

但是我仍然不知道为什么这个块没有被执行。 所以如果有人知道请post回答,非常感谢。