NSTableView에 대해 매우 기본적인 끌어서 놓기를 설정하려고합니다. 테이블 뷰에는 사용자 정의 셀이있는 단일 열이 있습니다. 열은 NSArrayController에 바인딩되며 배열 컨트롤러의 내용 배열은 내 컨트롤러 객체의 NSArray에 바인딩됩니다. 데이터가 테이블에 잘 표시됩니다. 나는 내 컨트롤러 개체 테이블 뷰의 dataSource
및 delegate
콘센트에 연결 한 다음 이러한 방법으로 구현 :NSTableView 끌어서 놓기가 작동하지 않습니다.
- (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에 대한 사용자 정의 셀을 전환하면 드래그 작업이 수행됩니다. 자, 내 사용자 정의 셀을 사용하여 드래그 앤 드롭 작업을 수행하는 방법?
'NSTableview'의 데이터 소스를 디버깅하고 위임 한 멤버가 예상대로 연결 되었습니까 * 체크 * 했습니까? – cacau
2011 년부터의 질문입니다. 이후이 문제를 해결했습니다 : http://stackoverflow.com/a/4676823/153112. – indragie