2011-01-29 3 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의 배열을 취합니다. 단지 NSDraggingInfo and its pasteboard에서 적절한 정보를 얻고, .app 파일을 허용 확장자를 확인하고 tableView:acceptDrop:row:dropOperation:에서 YES 반환에, 그리고

[self registerForDraggedTypes:[NSArray arrayWithObject:NSFilenamesPboardType]]; 

: 당신은 파일 이름을 수락 할 경우, NSFilenamesPboardType를 사용합니다.

+0

어떤 이유인지 나는 아직 녹색을 보지 못하고 있습니다. 무엇이 이것을 일으킬 수 있습니까? – nosedive25

+0

명백한 점을 확인하십시오 : 귀하의 IBOutlet이 테이블 뷰에 연결되어 있습니까? 테이블 뷰 대리자가 연결되어 있습니까? 중단 점이나'acceptDrop'의 NSLog에 히트가 있습니까? – kevingessner

+0

모두 연결되었지만 여전히 작동하지 않습니다. 그것을 작동 시키려면 당신의 제안을 사용했지만 그것을 테이블 뷰의 맨 위에 보이지 않는 NSView에 넣으십시오. – nosedive25

관련 문제