일부 MacOS 프로그래밍을 시도하고 NSPopupButton에서 바인딩이 작동하는 방식을 이해하는 데 어려움을 겪고 있습니다. 나는 NSDictionaryController (내가 중간 NSArrayController 필요하다고 생각하지 않지만 그것에 바인딩하는 것이 가장 좋은 방법입니다, 나는 그것에 열려있어)에 관심이 있어요.NSPopupButton을 NSDictionaryController에 바인딩하기
NSMutableDictionary 인 'species'속성을 가진 'db'속성을 가진 컨트롤러 개체를 만들었습니다. 'species'사전에는 키에 대한 ID와 값에 대한 Species 객체가 있습니다. Species 객체에는 description 속성이 있습니다. InterfaceBuilder에서 MyController, NSDictionaryController 및 NSPopupButton을 만들었습니다. Species.descriptions 팝업을 채우고 싶습니다. 이 옵션을 선택하면 해당 ID에 대한 액세스 권한이 필요합니다.
모델 키 경로 'db.species'를 사용하여 'Content Dictionary'를 MyController에 바인드하도록 NSDictionaryController를 설정했습니다. NSPopupButton을 사용하여 컨트롤러 키 'arrangedObjects'와 모델 키 경로를 'value.description'으로 설정하여 NSDictionaryController에 'Content Values'를 바인딩했습니다.
이렇게하면 목록이 채워지는 것 같습니다. 내 주요 질문은 선택을 연결하는 가장 좋은 방법은 무엇입니까. 이상적으로, NSDictionaryController를 사용하여 선택 항목에 액세스 할 수 있도록 선택 항목을 NSDictionaryController에 연결하고 싶습니다. 이 이유 중 하나는 NSDictionaryController에 다른 컨트롤을 연결하여 현재 선택 항목을 볼 수 있기 때문입니다. 그렇지 않다면 MyController 등의 속성에 연결해야합니까? 베스트 프랙티스를 찾고 있습니다. 인터페이스 빌더 메커니즘을 통해 다른 모델과 컨트롤러 디자인을 다른 응용 프로그램에서 쉽게 재사용 할 수 있기를 바랍니다.
NSPopupButton : 지침으로 브라이언의 답변을 사용
업데이트 바인드 내용 NSDictionaryController-> arrangedObjects-> value.description에
바인드 컨텐츠 객체에 NSDictionaryController-> arrangedObjects-> 키
선택된 인덱스를 NSDictionaryController-> selectionIndex에 매핑
바인드 NSDictionaryController-> db.spec ies
모든 것이 작동하는 것 같습니다. [[[컨트롤러 selectedObjects] lastObject] 값으로 컨트롤러에서 객체를 가져올 수 있습니다. 키, 값 쌍을 가진 선택된 객체의 배열에 있습니다.