我想通過視圖控制器找出將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