Finder からアプリの NSTableView にドラッグ アンド ドロップを実装しようとしています。セットアップではNSTableView
、Core Data ストアへの Cocoa バインディングを使用してデータソースとして機能するアレイ コントローラーを使用します。
基本的に、SOや他のサイトで見つけたさまざまなブログ投稿に従って、次のことを行いました。
awakeFromNib
私のView Controllerの中で、私は次のように呼びます:
[[self sourcesTableView] registerForDraggedTypes:[NSArray arrayWithObjects: NSPasteboardTypePNG, nil]];
NSArrayController をサブクラス化し、サブクラスに次のメソッドを追加しました (サブクラス化の理由は、配列コントローラーがテーブル ビューのデータソースとして機能するため、ドロップを通知する必要があるためです)。
- (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 をテーブル ビューにドラッグしても、何も起こらず、ファイルは問題なく元の場所に戻ります。私は何か間違ったことをしているに違いありませんが、何がわかりません。どこが間違っていますか?