如何自定义NSTableView的拖动会话

时间:2015-12-01 07:02:29

标签: objective-c macos tableview

我自定义NSTableView,并根据具有红色backgroundcolor和图像的视图自定义cellview。

例如:

enter image description here

该表实现方法:

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

我想自定义拖动项只是没有backgroudcolor的图像。 所以我写了这样的代码:

[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]];
}];

但事实上它并没有进入阻止。

有人知道为什么吗?

1 个答案:

答案 0 :(得分:0)

我绘制红色背景颜色的原因是 设计师让我在单元格视图上绘制一个蒙版视图,以指示所选状态。 但是tableView也实现了拖动源,所以当我拖动单元格时,也会拖出蒙版视图。

然后我用Google搜索并发现我们可以使用表格行视图来绘制所选状态。所以问题就解决了。

但我仍然不知道为什么不实施该块。 所以,如果有人知道,请发表答案,非常感谢。