カスタムNScellからコアデータを更新します
-
27-10-2019 - |
質問
カスタムがあります NSCell
(実際にはサブクラス化 NSTextFieldCell
)、スタンドアロンの編集者との両方で使用されています NSTableColumn
(コアデータにバインドされています NSArrayController
)。ユーザーが値を変更したら、電話します -[NSCell setObjectValue:]
値を更新する(それはanです NSNumber
)。これは、スタンドアロンのエディターで機能します。なぜなら、それが完了したとき、私は手動でバインディングを更新するからです。
[self setObjectValue:[NSNumber numberWithInt:newValue]];
そのステップ(バインドフィールドの更新)は、セルが中にあるときに欠落しています NSTableView
- ユーザーの編集中に更新された値が表示されます(マウストラッキング付き)が、それが終わるとすぐに、値は永続的な値に戻ります。
NSTableColumn
の鍵に縛られています -[NSArrayController arrangedObjects]
. 。私が欠けている「コミットする」または「更新バインディング」への何らかの呼びかけはありますか?ドキュメントに有用な機能が見つかりませんでした NSCell
また NSTableView
.
解決
これを解決するために、私は実装しました -tableView:setObjectValue:forTableColumn:row:
私の中で NSArrayController
サブクラス。私は自分のインスタンスを取得します NSManagedObject
行の引数からサブクラス、その後、オブジェクトバリュー引数から新しいモデルを手動で割り当てます。テキストセルが自動的にこれを行うとき、これが必要な理由はまだわかりませんが、機能します。