문제

Bindings가 제공 한 콘텐츠와 함께 NstableView와 NSoutlineView가 있습니다. 드래그 앤 드롭 기능을 갖고 싶습니다.

  • 표 a에서 줄을 드래그합니다 개요 B 행은 개요 B의 행이 나타내는 데이터 구조로 복사됩니다.

  • 개요에서 행을 드래그하십시오. b 개요 B의 다른 행은 첫 번째 행으로 표시된 데이터를 두 번째 행에 표시된 데이터로 복사합니다.

나는 읽었다 애플의 드래그 앤 드롭 문서 그리고 거의 아무데도 얻지 못했습니다. 내가해야 할 일에 실제로 적용되지 않는 것 같습니다. 내가 무엇을 놓치고 있습니까?

도움이 되었습니까?

해결책

데이터 소스가 필요합니다. Afaik, 바인딩만으로는 이런 일이 발생할 수 없습니다.

BSD 라이센스에 따라 미완성 된 ADIUM Xtras Creator에는 바인딩 구동 테이블보기에서 드래그 앤 드롭을 얻기 위해 데이터 소스로 설정할 수있는 배열 컨트롤러.

이 요구 사항은 nsoutlineview 및 nstreecontroller에 적용되지 않을 수 있습니다. 나는 그것을 시도하지 않았다.

다른 팁

당신이 링크 한 페이지는 당신이해야 할 일에 대해 매우 분명합니다. 표 A의 데이터 소스에서 구현하십시오 registerForDraggedTypes: 그리고 tableView:writeRowsWithIndexes:toPasteboard: 비공개를두기 위해 TableAPasteboardType 페이스트 보드의 데이터.

개요 B의 데이터 소스에서 동일한 두 가지 메소드를 구현하고 개인을 넣으십시오. OutlineBPasteboardType 페이스트 보드의 데이터.

마지막으로, 구현 tableView:validateDrop:proposedRow:proposedDropOperation: 그리고 tableView:acceptDrop:row:dropOperation: 페이스트 보드를 확인하려면 TableAPasteboardType 또는 OutlineBPasteboardType 그리고 바운드 모델을 적절한 변경으로 변경하십시오.

일단 당신이 그냥 쟁기질하고 그것을하는 것은 꽤 간단합니다.

MacOS 10.7에서는이를 구현하기 위해 일부 새로운 프로토콜이 추가되었습니다.

이있다 테이블에 대한 문서화 부족 현재는하지만 몇 가지 좋은 예를 찾을 수 있습니다.

nstableviwew의 경우 프로토콜 nstableviewdatasource는 다음 방법을 정의합니다.

  • (BOOL)tableView:writeRowsWithIndexes:toPasteboard:
  • tableView:validateDrop:proposedRow:proposedDropOperation:
  • tableView:acceptDrop:row:dropOperation:

nsoutlineview의 경우 프로토콜 nsoutlineviewdatasource는 다음 방법을 정의합니다.

  • (BOOL)outlineView:writeItems:toPasteboard:
  • (NSDragOperation)outlineView:validateDrop:proposedItem:proposedChildIndex:
  • (BOOL)outlineView:acceptDrop:item:childIndex:

이들은 각보기 유형에 대해 구현하기위한 최소 요구 사항입니다. 사용 사례는 상당히 유사합니다.

  1. Topasteboard : 메소드가 예를 반환하면 드래그가 시작됩니다.
  2. ValidatedRop :보기에서 마커를 업데이트하여 대상 노드가 허용되는 메소드 컨트롤
  3. acceptdrop : 낙하가 성공한 경우 방법을 반환합니다.

이것은 당신이 관리 해야하는 두 개의 하위 사용자 지사로 이어집니다. 첫 번째는 동일한보기 내에서 드래그 앤 드롭 또는 두 뷰 사이의 동일한 작업입니다. 또한 작업, 복사 또는 삭제 작업을 구별 할 수 있습니다. 좋은 예는 Xcode에서 드래그 앤 드롭에서 브레이크 포인트가 작동하는 방법입니다.

TableView에는 드래그 앤 드롭을 사용자 정의하는 몇 가지 추가 방법이 있지만 언급 한 방법은 작동하는 주요 방법입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top