我想通过视图控制器找出将NSArrayController(依次绑定到表视图)绑定到NSDocument实例的NSArray属性的正确方法有困难。如何将数组控制器绑定到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'是的,如果你做'[self.pages addObject:someObject]'否。你必须使用'mutableArrayValueForKey:'或'willChange:valuesAtIndexes:forKey:'/'didChange:valuesAtIndexes:forKey:'。 – Willeke