私は、Finderからドラッグアンドドロップを実装しようとしています。この設定では、コアデータストアへのCocoaバインディングを使用してデータソースとして機能するアレイコントローラであるNSTableView
が使用されます。NSTableViewとFinderからドラッグ&ドロップ
:
[[self sourcesTableView] registerForDraggedTypes:[NSArray arrayWithObjects: NSPasteboardTypePNG, nil]];
私はNSArrayControllerはをサブクラス化し、以下を追加しました:私は呼んで私のビューコントローラのawakeFromNib
で
メソッドをサブクラスに追加します(サブクラス化の理由は、アレイコントローラがテーブルビューのデータソースとして機能するので、配列コントローラにドロップの通知が必要であるということです)。
- (BOOL) tableView: (NSTableView *) aTableView acceptDrop: (id <NSDraggingInfo>) info row: (NSInteger) row dropOperation: (NSTableViewDropOperation)operation
上記の私の実装は、現在ログに書き込むだけで、ブール値YESを返します。
- (NSDragOperation) tableView: (NSTableView *) aTableView validateDrop: (id <NSDraggingInfo>) info proposedRow: (NSInteger) row proposedDropOperation: (NSTableViewDropOperation) operation
IBでは、私のカスタムNSArrayControllerサブクラスを指す配列コントローラがあります。
結果:何もありません。デスクトップからPNGをテーブルビューにドラッグすると、何も起こりません。そのファイルは元気に元に戻ります。私は間違って何かをしているに違いないが、何を理解していない。どこが間違っていますか?
ありがとうございますが、テーブルビューは引き続きドラッグ/ドロップを受け入れません。私がFinderからドラッグするファイルは、バウンスします。私は、データソースにテーブルをアタッチするためにCocoaバインディングを使用します。 – Roger
私は自分の答えを更新しました。それでもデータソースオブジェクトを実装する必要があります。 –