2011-01-29 7 views
1

私は、テーブルビューにアプリケーションファイルをドロップするのをサポートする次のコードを持っています。問題は、ドラッグ&ドロップすると緑色の+が表示されないことです。私はそれがregisterForDraggedTypes:と関係があると思うが、わからない。私は多くのチュートリアルを試みましたが、誰も私のために働いていませんでした。事前NSTableViewアプリケーションファイルをドロップすると、何が間違っていますか?

答えて

1

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から適切な情報を得ます。

+0

何らかの理由で私はまだ緑色の+が見えません。これを引き起こす原因は何ですか? – nosedive25

+0

明らかにチェックしてください:あなたのIBOutletがテーブルビューに接続されていますか?テーブルビューデリゲートは接続されていますか? 'acceptDrop'のブレークポイントやNSLogはヒットしますか? – kevingessner

+0

それはすべて夢中でしたが、まだ動作していません。それを動作させるために私はあなたの提案を使用しましたが、テーブルビューの上に目に見えないNSViewに入れました。 – nosedive25

関連する問題