2

나는 NSTreeController에 바인딩 된 NSOutlineView을 가지고 있습니다. 세부 사항은 다음과 같습니다수동 코코아 바인딩이있는 NSOutlineView

  • treeController는 "어린이"속성을 가진 클래스 이름, 같은 클래스 모드, CommonListData을 가지고
  • treeController는 파일의 소유자 "headersArray"바인딩 "컨텐츠 배열"가 (형식 : NSArray). 은 "headersArray는"
  • NSOutlineView가 treeController의 arrangedObjects
  • 각 셀보기 요소를 많이 가지고와 뷰 기반 outlineView는, 인터페이스 빌더로 설계되는 "콘텐츠"에 대한 바인딩을 가지고 CommonListData 항목의 배열입니다. 각 요소 (라벨, 이미지 등)는 설치가 매우 간단 관련 objectValue.xxx 모델 키 경로

NSTableCellView에 '값'바인딩을 가지고 있고, 모든 추가 및 개체를 삭제에서 잘 작동합니다. 그러나 문제는 개요보기에서 항목을 추가하거나 제거 할 때 NSOutlineView/NSTableView 애니메이션을 사용하지 않는다는 것입니다. treeController에 요소를 추가하거나 제거하면 테이블이 다시로드됩니다. headersArray의 자식 객체에 직접 적용됩니다. 그게 코코아 바인딩이나 어떤 제한이 있는지 모르겠습니다.

나는 모든 바인딩을 사용하지 않도록 설정하고 수동으로 수행 할 수 있는지 여부를 고려합니다. 유일한 단점은 NSOutlineView 셀 뷰에 복잡한 요소가있어 코드에서 뷰 요소를 데이터에 매핑하지 않아도된다는 것입니다. 이상적으로는 바인딩을 NSTableViewCell에 보관해야합니다.

그래서 내 질문은 :
그것은 NSTableCellView에 인터페이스 빌더 내에서 바인딩을 유지하지만, treeController에 대한 내용을 바인딩 할 수 있습니까? 아니면 NSTreeController에서 데이터를 추가하고 제거해도 UI 업데이트가 실행되지 않도록 "arrangedObjects"바인딩에 대한 대안이 있습니까?

바인딩을 제어하는 ​​데 도움이되므로 애니메이션을 올바르게 트리거 할 수 있으며 모든 업데이트와 함께 뛰어 넘지 않아도됩니다.

답변

3

셀보기 내의보기 바인딩은 개요보기 내용의 바인딩과는 무관하다고 생각합니다. 개요보기에서 바인딩을 사용하는지 여부에 관계없이 결국 셀보기의 objectValue 속성이 설정됩니다. KVO와 호환되는 방식으로 진행되는 한 (해당하는 경우) 해당 속성에 대한 모든 바인딩이 작동합니다.

+0

감사합니다. 이 일을 어떻게 수행해야할지 모르겠습니다. treeController의 "arrangedObject"에 대한 outlineView의 내용 바인딩을 제거했습니다. 'outlineView : numberOfChildrenOfItem :','outlineView : child : ofItem :','outlineView : viewForTableColumn : item :'과 같은 델리게이트 메소드를 구현하고 모든 열을 올바르게 보여주기 위해 tableview를 얻었습니다. 바인딩이있는 tableviewCell이 표시됩니다 (viewForTableColumn : item :에서 직접 구현되는 레이블은 잘 보여줍니다). 어떤 아이디어? 나는'objectValue'가 데이터를 얻지 못하고 있다고 생각합니까? –

+1

'-outlineView : objectValueForTableColumn : byItem :'을 구현 했습니까? –

+0

아니, 그럴지도 모른다! 나는 'outlineView child : ofItem :'과'outlineView : objectValueForTableColumn : byItem'에 들어가는 것에 대해 다소 혼란 스럽습니다.이 작업을 해보고 작동하는지 봅시다. –