2014-02-14 4 views
1

여러 개의 NSPopUpButton을 동일한 모델 개체와 동기화 된 상태로 유지하려고합니다. 나는 바인딩에 익숙해지고 다음과 같은 체계를 구현했다.여러 NSArrayController가 동일한 배열을 제어 할 수 있습니까?

Controllers

이 끔찍한 생각인가?

여기서 각 NSPopUpButton에는 고유 한 NSArrayController가 있습니다. 각 NSArrayController는 내 모델 계층의 NSMutableArray 데이터 소스에서 해당 내용을 가져옵니다.

모델 배열 (위 예의 동물 배열)에 객체를 추가하거나 제거 할 때 이상한 문제를 발견했으며이 접근법이 얼마나 실용적인지 또는 여러보기를 동기화 상태로 유지하는 더 좋은 방법이 있는지 궁금해하고있었습니다. 같은 모델?

+0

에 의해 반환 된 배열 프록시를 사용해야합니다. 다른 작업에 적합하지 않은 것을 선택하십시오. 죄송합니다. 저항 할 수 없습니다. –

+0

절대 남자를 암소로하지 마세요 :) –

답변

1

기본 스레드의 모델을 변경하지 않는 한 괜찮습니다.

각 NSArrayController는 NSMutableArray에서 KVO 알림을 수신하고 그에 따라 자동으로 업데이트됩니다.

NSArrayController 중 하나를 통해 배열을 변경하면 NSMutableArray가 업데이트되어 다른 두 NSArrayControllers에 의해 캐치 될 KVO 알림이 다시 트리거됩니다.

NSMutableArray를 KVO 준수 방식으로 업데이트하는 것이 중요합니다. 즉, mutableArrayValueForKey:

+0

-mutableArrayValueForKey :를 사용하여 업데이트하지 않고 단순히 배열 컨트롤러 중 하나를 선택하고 개체를 추가/제거했습니다. 모델을 직접 다루어보고 도움이되는지 확인하겠습니다. –