NSTableView に非常に基本的なドラッグ アンド ドロップを設定しようとしています。テーブル ビューには、(カスタム セルを含む) 1 つの列があります。列は NSArrayController にバインドされ、配列コントローラーのコンテンツ配列はコントローラー オブジェクトの NSArray にバインドされます。データはテーブルに正常に表示されます。dataSource
テーブル ビューのアウトレットとアウトレットをコントローラー オブジェクトに接続し、delegate
これらのメソッドを実装しました。
- (BOOL)tableView:(NSTableView *)aTableView writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard *)pboard
{
NSLog(@"dragging");
return YES;
}
- (NSDragOperation)tableView:(NSTableView*)tv validateDrop:(id <NSDraggingInfo>)info proposedRow:(NSInteger)row proposedDropOperation:(NSTableViewDropOperation)op
{
return NSDragOperationEvery;
}
- (BOOL)tableView:(NSTableView *)aTableView acceptDrop:(id <NSDraggingInfo>)info
row:(NSInteger)row dropOperation:(NSTableViewDropOperation)operation
{
return YES;
}
ドラッグタイプも登録しました-awakeFromNib
:
#define MyDragType @"MyDragType"
- (void)awakeFromNib
{
[super awakeFromNib];
[_myTable registerForDraggedTypes:[NSArray arrayWithObjects:MyDragType, nil]];
}
問題は、 -tableView:writeRowsWithIndexes:toPasteboard: メソッドが呼び出されないことです。私はたくさんの例を見てきましたが、間違っていることは何もわかりません。カスタムセルを使用していることが問題でしょうか? この機能を有効にするために、セルのサブクラスでオーバーライドする必要があるものはありますか?
編集:確認しました。カスタム セルを通常の NSTextFieldCell に切り替えると、ドラッグが機能するようになりました。では、カスタム セルでドラッグ アンド ドロップを機能させるにはどうすればよいでしょうか。