저는 코코아의 바인딩 세계에 대해 상당히 새롭기 때문에 (아마도/오해로 인한) 몇 가지 문제가 있습니다.NSArrayController에 바인딩 된 테이블 열을 업데이트하십시오.
나는 Plugin 클래스의 객체를 포함하는 plugins이라는 NSMutableArray를 포함하는 싱글 톤을가집니다. 그것은 플러그인 배열에 객체를 추가하는 loadPlugins 메소드를 가지고 있습니다. 이것은 언제라도 호출 될 수 있습니다. 인터페이스 빌더에 인스턴스로 추가되었습니다.
또한 IB는 NSObjectController이며, 콘텐트 콘센트는 싱글 톤에 연결됩니다. NSArrayController의 contentArray가 NSObjectController (컨트롤러 키는 '선택', 모델 키 경로는 'plugins', 객체 클래스 이름은 'Plugin')에 바인딩됩니다.
마지막으로 필자 클래스의 속성 키를 사용하여 값이 NSArrayController의 arrangedObjects에 바인딩 된 두 개의 열이있는 테이블 뷰가 있습니다.
지금까지 표준 (자습서에서 알 수있는 한). 내 문제는 싱글 톤에서 loadPlugins 메서드가 호출되고 객체가 플러그인 배열에 추가 될 때 테이블이 객체를 표시하도록 업데이트되지 않는다는 것입니다 (nib로드 전에 loadPlugins가 호출되지 않는 한). tableView에서 호출 된 -reloadData는 아무 것도 수행하지 않습니다.
참조 된 배열이 업데이트되었음을 NSArrayController에 알리는 방법이 있습니까? NSArrayController, loadPlugins 사용할 수있는 - add : 메서드가 이해하지만이 표시 특성에서 완전히 별도로 singleton 유지하려는 바람직하지 않습니다.
이는 관련이 보인다 : Refresh Cocoa-Binding - NSArrayController - ComboBox
라인 : 아마도 문제를 정확하게 파악하는 것 같다 "컨트롤러의 뒤에서 배열을 편집"하지만 내가 할 수 있다는 것을 희망하는 것은 모르는 싱글을 가지고 컨트롤러.
미리 감사드립니다.
TableColumn --('arrangedObjects', 'pluginName', Value)--> NSArrayController
NSArrayController --('selection', 'plugins', ContentArray)--> NSObjectController
NSObjectController --(content)--> PluginsManager
이것은 기념비적으로 도움이되었습니다. 자신의 질문에 답변 해 주셔서 감사합니다. 이것이 나에게 큰 걸음이었습니다. –