2010-11-19 5 views
1

私はいくつかのフィールドを持つ編集ウィンドウを持っています。これらのフィールドはすべて、NSObjectControllerの 'content'コントローラキーにバインドされています。 NSArrayControllerのキー。私は同じNSArrayControllerにバインドされたNSTableViewも選択しています。ユーザーが「OK」をクリックするまで編集コミットを遅らせるCocoaバインディング

私の編集ウィンドウでは、ユーザーがテキストフィールドを離すとすぐに、その値がNSTableViewに伝播されます。ユーザーが編集ウィンドウで「OK」をクリックするまで、コミットされている値を停止するにはどうすればよいですか?

+0

私が作成してみました編集ウィンドウの新しいManagedObjectContextですが、[context save]を呼び出さなくても変更はすぐに反映されます。これが良いアプローチかどうかは分かりません。私は主なManagedObjectContextの選択に依然として拘束力を持っていますが、これは意図したとおりに動作しない可能性があります。 1つのコンテキストから別のコンテキストに選択をコピーすることは可能でしょうか? –

答えて

1

あなたは、編集ウィンドウに値を格納するために一時的NSMutableDictionaryオブジェクトを使用することができ、その後、ときに、ユーザークリック「OK」を辞書の値を使用してオブジェクトをインスタンス化します。すなわち:

NSManagedObject* obj = [NSEntityDescription insertNewObjectForEntityForName:@"MyObject"            
         inManagedObjectContext: self.managedObjectContext]; 

[obj setValuesForKeysWithDictionary:tempObject]; 
0

編集ウィンドウで一時的な値を使用することをお勧めします。ユーザーが「OK」をクリックすると、実際に値が割り当てられます。

+0

あなたは[obj valueTransient]のような '[obj value]'のラッパーにバインドします。次に、ユーザーが[OK]をクリックしたときに '[obj setValue:[objValueTransient]] ' ?私は何かが欠けているように感じる。 –

+0

申し訳ありません、私はちょうどユーザーがOKを押すまで完全に別のオブジェクトを使用することを意味しました – griotspeak

関連する問題