nstableview와 nscollectionView의 차이점
-
11-09-2019 - |
문제
스노우 레오파드 앱을 개발하기위한 경로를 결정하려고합니다. 먼저, 나는 명백한 차이점을 시작해야합니다.
NSTableView
동일한 "요소"(행)의 다른 부분을 나타 내기 위해 여러 개의 데이터 열이있을 수 있습니다. NSCollectionView
데이터 그리드도 표시 할 수 있지만 모든 행+열 콤보는 고유 한 요소입니다. 내 목적을 위해 단일 열을 다루고 있다고 가정합니다.
내가 말할 수있는 한,
NSCollectionView
항목이 있습니다NSView
모두 동일한 치수 여야합니다. 또한,와 달리NSTableView
, CollectionView 항목은 다음에 복사됩니다NSCollectionView
adataSource
(나는 이것에 대해 확실하지 않습니다. 내가 틀렸다면 제발 바로 잡아주세요).NSTableView
용도NSCell
s 행 표시를 사용자 정의하기로 결정한 경우. 처럼NSCell
그렇지 않습니다NSResponder
, 이벤트를 어떻게 처리합니까 (iTunes의 화살표가 작동하는 방식과 같이 셀에 일종의 액세서리를 추가하고 싶다면 (iTunes는 탄소).NSCell
IB의 서브 클래스는NSControl
형제들,하지만 내가 원한다면 어떨까요?MySweetView
anNSCell
?).둘 다 바인딩과 관련하여 동일하게 작동하는 것 같습니다. 맞습니까?
드디어,
NSCollectionView
요소의 애니메이션 (예를 들어 항목을 다시 조절하거나 필터링하기 위해)과 잘 작동하는 것으로 보입니다. 할 수 있다NSTableView
줄이 있나요?
내가 고려해야 할 다른 것이 있습니까?
해결책
- 여기서 차이점은 테이블 뷰에서 모든 행이 하나의 항목이고 열에는 해당 항목의 다른 측면 (속성)이 표시된다는 것입니다. 컬렉션보기에서 모든 행 열 교차로는 하나의 항목입니다.
- 나는 이것을하지 않았지만 구현을 시도합니다
tableView:didClickTableColumn:
당신의 테이블에서 대의원. 이 방법은 10.6에서 새롭습니다. 당신은 가져 가야 할 것입니다[NSApp currentEvent]
, 그리고 아마도 열의 셀의 메소드로 전달하십시오. - 테이블 뷰를 사용하면 열을 바인딩합니다. 당신은보기를 바인딩하지 않습니다 (어쨌든 내용을 제공하지 말고 선택 색인과 같은 것들에 대한보기를 바인딩합니다). 컬렉션보기에는 열이 없으므로 ( #1 참조) 항상보기를 바인딩합니다.
- 아니.
다른 팁
fwiw, nstableview는 Appkit의 매우 오래된 부분이며 약간 crufty입니다.
플랫폼을 처음 접한다면 먼저 NscollectionView 주변에서 머리를 잡는 것이 좋습니다.