4

ビューおよびデータソース ベースの から項目をドラッグするときに使用する画像を変更したいのですNSOutlineViewが、フックが見つからないようです。改造してみた

- (void)dragImage:(NSImage *)anImage at:(NSPoint)viewLocation offset:(NSSize)initialOffset event:(NSEvent *)event pasteboard:(NSPasteboard *)pboard source:(id)sourceObj slideBack:(BOOL)slideFlag

rowViews、tableCellViews、およびNSOutlineViewそれ自体のサブクラスにありますが、役に立ちません。

デフォルトの画像(明らかにtableCellViewの画像とテキストフィールドから取得されたもの)がどこから来ているか知っている人はいますか?

4

2 に答える 2

2

画像は NSTableCellView から取得されていることがわかります。したがって、フックは、そのサブクラスで -(NSArray *)draggingImageComponents をオーバーライドすることです。

于 2012-12-13T17:12:19.230 に答える
0

少し厄介です:データ ソース
から、パラメーターを介して渡されたインスタンスにイメージを設定できます (例: へ) 。NSDraggingSessiontableView:draggingSession:willBeginAtPoint:forRowIndexes:

enumerateDraggingItemsWithOptions:forView:classes:searchOptions:usingBlock:次に、インスタンスでメソッドを使用してNSDraggingSession、実際のドラッグ イメージを変更できますNSDraggingItems

   [session enumerateDraggingItemsWithOptions:NSDraggingItemEnumerationConcurrent
                                      forView:tableView
                                      classes:[NSArray arrayWithObject:[NSPasteboardItem class]]
                                searchOptions:nil
                                   usingBlock:^(NSDraggingItem *draggingItem, NSInteger index, BOOL *stop)
    {
       [draggingItem setDraggingFrame:NSMakeRect(0, 0, myWidth, myHeight)
                             contents:myFunkyDragImage];
    }];
于 2014-03-02T12:52:03.390 に答える