2012-09-01 5 views
0

NSViewController 또한 NSOutlineViewDataSource입니다. 나 또한 NSOutlineView 데이터 소스로 내보기 컨트롤러의 인스턴스에 바인딩 된 NSOutlineView보기에 바인딩 된 창이 있습니다 : 사용자 정의보기 컨트롤러의 속성.뷰 선택이 변경 될 때 사용자 정의 NSViewController representingObject가 업데이트되지 않습니다.

컨트롤러가 아웃 라인보기를 잘 채 웁니다. 그러나보기 내의 선택 항목은 컨트롤러의 displayedObject 속성을 자동으로 업데이트하지 않습니다. representObject의 변경을 트리거하는 것으로 보이는 것은 setRepresentedObject : 직접 호출하는 경우입니다. 어떤 종류의 목적을 직접적으로 무시합니다.

그 이유는 무엇입니까? representObject 입니다. 자동으로 업데이트 되나요? 미리 감사드립니다 ...

답변

3

귀하의 질문을 이해한다면, 당신은 무엇을 이해하고 있지 않습니다 representedObject입니다. representedObject을 모두 나타내는 모델 개체입니다.보기 컨트롤러가 표시하는 데이터입니다. 현재 콘텐츠 모음을 보여주는보기가 아닙니다. 사용자 지정 최상위 뷰 컨트롤러에 대한 representedObjectNSArray이거나 뷰 컨트롤러에 표시 할 데이터 집합을 포함하는 다른 컬렉션 클래스입니다. 사용자 지정 최상위 뷰 컨트롤러에 대한 representedObject을 변경하면 패턴을 올바르게 사용하는 경우 완전히 새로운 데이터 세트로 교체하는 효과가 있어야합니다.

일반적으로 표 형식의보기에서 개별 요소에 대한보기 컨트롤러는 각각 representedObject이며이 개체는 변경되지 않습니다. 예를 들어, NSCollectionView을 사용하는 경우 뷰의 각 요소는 의 서브 클래스 인 NSCollectionViewItem에 의해 제어됩니다. 각 NSCollectionViewItem에 대한 representedObject은 작은보기에서 어떤 데이터를 표시할지 알려줍니다.

NSOutlineView과 세포 당신이 맥 OS X 10.7 이상에서 그들에게이 방법을 사용하도록 선택하지 않는 자주 NSCells 오히려 NSViews 본격적인 전체보다 인 것을 다른 NSTableView 슈퍼 클래스. 이 경우에도 일반적으로 각 셀을 관리하는 서브 클래스가 NSViewController입니다. 따라서 뷰 컨트롤러 representedObject 패턴은 사용자가 선택할 개별 요소의 레벨에서 사용되지 않습니다. 원하는 것이 NSOutlineView의 선택 항목을 추적하는 것이면이를 수행 할 수있는 많은 NSTableView 방법이 있습니다.

+0

아, 알겠습니다. - 감사합니다. 그건 내 질문에 대한 답. –