NSManagedObjectContextに関連付けられた組み込みのNSUndoManagerを介した元に戻す/やり直しをサポートするCoreDataドキュメントベースのアプリがあります。Core Data内で多数のタスクを実行し、これらすべてのタスクをbeginUndoGrouping
/を介してUNDOグループにラップendUndoGrouping
し、NSUndoManagerによって処理されるいくつかのアクションを設定しています。
元に戻すは正常に機能します。いくつかの連続したアクションを実行できます。その後、それぞれを連続して元に戻すと、アプリの状態が正しく維持されます。ただし、「やり直し」メニュー項目は有効になりません。これは、NSUndoManagerがメニューにやり直す項目がないことを通知していることを意味します。
NSUndoManagerが、元に戻されたアイテムを忘れているように見え、REDOの発生を許可していないのはなぜですか?
私が言及しなければならないことの1つは、ドキュメントが開かれた/作成された後に元に戻る登録を無効にしているということです。アクションを実行するときは、、を呼び出し、enableUndoRegistration
アクションを実行してから、、、、を呼び出し、最後に。beginUndoGrouping
を呼び出します。これにより、特定のアクションのみが元に戻せるようになり、これら以外で行った他のデータ変更はNSUndoManagerに認識されなくなります。これは問題の一部かもしれませんが、もしそうなら、なぜそれがやり直しに影響を与えているのか疑問に思いますか?processPendingChanges
setActionName:
endUndoGrouping
disableUndoRegistration
前もって感謝します。