2015-12-01 17 views
0

我自定義了NSTableView,並根據視圖使用紅色backgroundcolor和圖像自定義了cellview。如何自定義NSTableView的拖動會話

例如:

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

但實際上它沒有成塊。

有沒有人知道爲什麼?

+0

你是如何檢查它沒有進入塊? – Willeke

+0

@willeke我在塊中添加一個日誌,但它沒有打印。 – melody5417

+0

我試過這個,它的作品除了圖像的位置。問題可能在你沒有顯示的代碼中。 – Willeke

回答

0

我繪製紅色背景色的原因是 設計師要求我在單元格視圖上繪製遮罩視圖以指示選定的狀態。 但tableView也實現了拖動源,所以當我拖動單元格時,蒙版視圖也被拖出。

然後我Google搜索並找到我們可以使用錶行視圖來繪製選定的狀態。所以問題就解決了。

但我仍然不知道爲什麼塊沒有實施。 所以如果有人知道請發表回答,非常感謝。