0

ユーザーがキャンバス上に点を設定する一種の描画アプリを開発しています。描画されているものは、NSManagedObjects として保存されます。また、元に戻すマネージャーを有効にして、ユーザーがボタンを押すことで最後の描画ジェスチャを元に戻すことができるようにしました。

それはすべて期待どおりに機能します。

次に、キャンバス上のすべてを削除するボタンがあります (キャンバスをクリア)。押されたときに、バックグラウンド スレッドで削除操作を行うと、時間がかかる場合があり、プログレス バーを表示したいと考えています。次に、バックグラウンド スレッドのモデル オブジェクト コンテキストをメイン スレッドのモデル オブジェクト コンテキストとマージします。これもうまくいきます。

しかし、ユーザーが元に戻すボタンを 1 回タップするだけで、完全な削除操作を元に戻すことができるようにしたいと考えています。これは私ができないことです。

マルチスレッド部分については、このチュートリアルに従っています: http://www.cimgf.com/2011/05/04/core-data-and-threads-without-the-headache/

これを2つのスレッドのマージを超えて元に戻すことはできないようです(ただし、一度は機能しましたが、理由はわかりません)。全体を元に戻すグループにネストする必要があるかどうかわかりません。試してみましたが、まだ運がありません。

4

1 に答える 1

1

ネストされた元に戻すグループでできると思います。操作をラップして、

-(void)beginUndoGrouping;
-(void)endUndoGrouping;

...-(void)undoNestedGroup元に戻すために使用します。

于 2012-07-10T17:52:23.577 に答える