2

私の小さなココアアプリケーションでは、NSObjectControllerを使用して、クラスのプロパティをいくつかのテキストフィールドにバインドしました。私がこれまでに抱えている唯一の問題は、NSObjectControllerが現在の入力でクラスを更新する前に、常にテキストフィールドを残す必要があるということです。

これは、ユーザーがtexfieldを離れずに、[保存/送信]ボタンをすぐにクリックした場合に問題になります。クラスには現在の入力が含まれていません。常に悪いこと。

これを回避する方法を探しています。ユーザーがフィールドを終了した場合でも、NSObjectControllerに現在の入力を取得するように指示するようなものです。これが可能であれば、保存する前にこのコマンドをsave-Methodに入れることができ、すべて問題ありません。

4

2 に答える 2

1

commitEditing[OK]ボタンのハンドラーでコントローラーにメッセージを送信します。これはあなたが求めていることをします。それは次のように簡単です:

- (void)save:sender {
    if (![self.myObjectController commitEditing]) {
        // Handle error when object controller can't commit editing
    }

    // Other stuff
}
于 2009-10-19T18:19:23.110 に答える
0

テキストフィールドのvalueバインディングに移動して[値を継続的に更新]オプションをオンにすると、ユーザーが変更するたびに、つまりキーストロークごとに1回、新しい値がモデルオブジェクトに設定されます。これにより、ウィンドウを閉じる前にモデルが正しい値を持っていることが保証されますが、データモデルに設定されている値の効果(ある場合)によっては、少しやり過ぎかもしれません。

于 2009-10-19T19:41:01.937 に答える