2015-01-11 1 views
-1

메신저 osx-dev noob은 코어 데이터 저장소 엔티티의 내용을 보여주는 세 개의 테이블 뷰가있는 응용 프로그램을 빌드하려고합니다. 그러나 각 테이블 뷰는 엔티티의 "상태"속성에서 필터링됩니다.코코아 바인딩은 세 개의 테이블 뷰와 함께 발행됩니다.

텍스트 필드에 선택한 엔터티를 표시하려고 할 때 문제가 발생합니다. 나는 다른 페치 술어와 함께 세 가지 다른 배열 컨트롤러를 사용하고있다. 하지만 텍스트 필드에서 하나의 배열 컨트롤러에만 값을 바인딩 할 수 있습니다.

바인딩을 도용해야하고 모든 프로그래밍 방식으로 처리해야합니까 아니면이 간단한 해결책이 있습니까? :)

여기 내 앱 설명을 파악할 수있는 스크린 샷입니다. enter image description here

+0

위의 세 테이블에서 가장 최근의 선택 사항을 아래 텍스트 필드에 표시 하시겠습니까? 세 테이블의 선택 사항이 동기화되지 않았습니까? 각각 다른 엔티티가 선택 될 수 있습니까? – stevesliva

답변

0

텍스트 필드가이 GUI로 원하는 것을 만족하면 바인딩을 유지하십시오. 해당 필드가 나타내는 하나의 엔티티를 제어하려면 NSObjectController을 추가하십시오. 해당 필드에 대한 사용자의 변경 사항을 유지하려면 바인딩이 여전히 좋습니다.

하지만 텍스트 필드에 표시되는 내용을 제어 할 수있는 세 개의 테이블이 있으면 테이블 중 어느 것이 유리하는지 결정하는 일종의 비 바인딩 글루 코드가 필요할 것입니다. NSTableViewDelegate 프로토콜을 구현하여 원하는 모든 것을 할 수 있습니다.

텍스트 필드에 사용자가 테이블에서 클릭 한 마지막 엔티티가 표시되어야하는 경우 각 테이블에 동일한 tableViewSelectionDidChange 대리인 기능을 호출하면됩니다. 세 테이블 모두 동일한 대리인을 가질 수 있습니다. 그런 다음 해당 기능에서 NSObjectControllersetContent으로 전화 할 수 있습니다.

같은 접착제 코드를 사용하여 세 가지 테이블 중 하나에서 둘 이상의 선택을 방지 할 수 있습니다. 동일한 델리게이트 기능을 사용하면 다른 테이블의 모든 것을보기 또는 컨트롤러를 통해 선택 취소 할 수 있습니다. 그러나 그것은 당신에게 달려 있으며, 다중 선택이 필요한지 여부를 고려해야합니다.

관련 문제