registerForDraggedTypes
で
- (void)awakeFromNib {
[apps registerForDraggedTypes:[NSArray arrayWithObject:@"app"]];
}
- (BOOL)tableView:(NSTableView *)tv writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard*)pboard
{
return YES;
}
- (NSDragOperation)tableView:(NSTableView*)tv validateDrop:(id <NSDraggingInfo>)info proposedRow:(int)row proposedDropOperation:(NSTableViewDropOperation)op
{
return NSDragOperationCopy;
}
- (BOOL)tableView:(NSTableView *)aTableView acceptDrop:(id <NSDraggingInfo>)info
row:(int)row dropOperation:(NSTableViewDropOperation)operation
{
return YES;
}
おかげで、ファイルの拡張子の配列を探していません。 uniform type indentifiersの配列をとります。あなたはファイル名を受け入れるようにしたい場合は、NSFilenamesPboardType
を使用します。
[self registerForDraggedTypes:[NSArray arrayWithObject:NSFilenamesPboardType]];
その後、唯一.app
ファイルを受け入れるように、拡張子をチェックし、tableView:acceptDrop:row:dropOperation:
からYESを返す、NSDraggingInfo
and its pasteboardから適切な情報を得ます。
何らかの理由で私はまだ緑色の+が見えません。これを引き起こす原因は何ですか? – nosedive25
明らかにチェックしてください:あなたのIBOutletがテーブルビューに接続されていますか?テーブルビューデリゲートは接続されていますか? 'acceptDrop'のブレークポイントやNSLogはヒットしますか? – kevingessner
それはすべて夢中でしたが、まだ動作していません。それを動作させるために私はあなたの提案を使用しましたが、テーブルビューの上に目に見えないNSViewに入れました。 – nosedive25