보기 컨트롤러를 통해 NSDocument 인스턴스의 NSArray 속성에 NSArrayController (차례대로 테이블 뷰에 의해 바인드 됨)를 바인딩하는 올바른 방법을 알아내는 데 문제가 있습니다.배열 컨트롤러를 NSDocument 배열 속성에 바인딩하는 방법은 무엇입니까?
내 NSDocument 하위 클래스에는 NSArray * pages
속성이 있습니다. 먼저 뷰 컨트롤러에서 pages
속성을 미러링했는데, 이는 NSDocument가 pages
배열에 항목을 추가 할 때 테이블 뷰가 업데이트되지 않는다는 것을 의미합니다. 이 경우 업데이트를 수행하는 유일한 방법은보기 컨트롤러에서 will..
/didChangeValueForKey:@"pages"
이지만보기 컨트롤러에서 변경 사항이 트리거되지 않으면 실용적이지 않습니다. NSDocument에서 will/didChangeValueForKey
을 호출해도 어레이 컨트롤러가 업데이트되지 않습니다.
ViewController의 document.pages
에 직접 바인딩하려고 시도했지만 작동하지 않거나 업데이트가 표시되지 않습니다.
여기에 사용할 올바른 기술은 무엇입니까?
'pages' 속성이 [KVO Compliance] (https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueObserving/Articles/KVOCompliance.html#/) 규칙을 준수하는지 확인 했습니까?/apple_ref/doc/uid/20002178-BAJEAIEE)? – Willeke
NSDocument는 NSObject를 상속하므로 KVO를 준수한다고 가정합니다. pages 속성은'@property (nonatomic, strong) NSMutableArray * pages;로 정의됩니다. - 이해할 수있는 것부터 모두 필요한 것입니다. 맞습니까? – fbitterlich
'self.pages = someArray' yes를하면, [self.pages addObject : someObject]'no. 당신은'mutableArrayValueForKey :'또는'willChange : valuesAtIndexes : forKey :'/'didChange : valuesAtIndexes : forKey :'를 사용해야 만합니다. – Willeke