ビューコントローラ経由で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' yesを実行した場合、' [self.pages addObject:someObject] 'を実行すると、 'mutableArrayValueForKey:'や 'willChange:valuesAtIndexes:forKey:'/'didChange:valuesAtIndexes:forKey:'を使う必要があります。 – Willeke