【发布时间】:2017-04-26 14:34:55
【问题描述】:
我无法找到通过视图控制器将 NSArrayController(反过来由表视图绑定)绑定到 NSDocument 实例的 NSArray 属性的正确方法。
我的 NSDocument 子类有一个属性NSArray * pages。我首先在视图控制器中镜像了 pages 属性,但这意味着当 NSDocument 将项目添加到其 pages 数组时,表视图不会更新。在这种情况下,强制更新的唯一方法是视图控制器中的will../didChangeValueForKey:@"pages",但是当视图控制器未触发更改时,这是不切实际的。在NSDocument中直接调用will/didChangeValueForKey不会触发数组控制器更新。
我尝试直接绑定到 ViewController 的 document.pages,但这似乎不起作用,或者至少也没有显示任何更新。
在这里使用什么技术是正确的?
【问题讨论】:
-
你检查
pages属性是否遵循KVO Compliance的规则? -
由于 NSDocument 继承自 NSObject,我认为它是 KVO 兼容的。 pages 属性定义为
@property (nonatomic, strong) NSMutableArray *pages;- 据我了解,这应该是所需要的,对吧? -
如果你这样做
self.pages = someArray是,如果你这样做[self.pages addObject:someObject]否。您必须使用mutableArrayValueForKey:或willChange:valuesAtIndexes:forKey:/didChange:valuesAtIndexes:forKey:。
标签: objective-c cocoa-bindings nsarraycontroller nsdocument