Xcode 3で始まったMacOSのコアデータプロジェクトは、Xcode 4でうまく動作しません。特に、元に戻す/やり直しの管理があります。
Xcode 4から新しいCore Dataプロジェクトを開始しましたが、取り消しに関する問題に直面しています。Undo
とRedo
のメニュー項目は、Xcode 3で作成されたプロジェクトの場合のように、First ResponderのUndo:\Redo:
メソッドにリンクされています。メニューは常に無効になっていました。
メニュー項目のEnabled
プロパティからのバインドをmanagedObjectContext.undoManager.canUndo/canRedo
にしました。これにより、ユーザーがオブジェクトを変更したときにメニューが有効になりますが、とにかく元に戻す操作は効果がありませんでした。メニューは有効なままですが、 。アンドゥを得るための唯一の方法は、まずレスポンダへのメニュー項目の接続を切断し、代わりにAppDelegateの新しいIBActionsに別のものを作ることだった
:このようにXcode 4のコアデータと元に戻すアクション
- (IBAction)myUndoAction:(id)sender
{
[[[self managedObjectContext] undoManager] undo];
}
- (IBAction)myRedoAction:(id)sender
{
[[[self managedObjectContext] undoManager] undo];
}
(およびEnable
性質を持ちますcanUndo
とcanRedo
にバインドされている場合)、両方のメニュー項目がCore Dataオブジェクトに対して期待通りに機能します。とにかく、Xcode 3でこの問題が発生したことはありません。
誰かがXcode 4でこの問題に直面していますか?古いテンプレートの問題を避けるため、Xcode 4.2.1を一から再インストールしましたが、同じ問題が再発しました。
私はXcode 3もインストールするのは好きではありません。機能しているプロジェクトから始めて、プロジェクトをXcode 4に移行するだけです!
私は知っているすべてのフォーラム、Appleの議論でグーグルで調べましたが、何も見つかりませんでした。私は10.7.2です。アクションはファーストレスポンダにリンクされたままでなければならないので、アンドゥ/リドゥは常に、ManagedObjectContextからNSUndoManager
を呼び出すようAppDelegateにアンドゥ/リドゥをリンクして
UPDATE
は、他の操作を中断します。
コアデータプロジェクトを最初から生成してから、Xcode 4からオープンする必要があります(テンプレートのどこにバグがあるのか分かりません...)
タイラーありがとう、これが解決!私はちょうどXCode 4のCoreDataテンプレートがAppDelegateに設定されていないメインウィンドウのデリゲートを持っていることに気付きました。これはおそらくwindowWillReturnUndoManagerが呼び出されなかった理由でした。 –
@ max.me私は同じ問題があったし、私のウィンドウのデリゲートをInterface BuilderのNIBファイルの "App Delegate"に設定した後に動作します。しかし、今私はまた、ここで何が起こっているのか理解したかった:誰も説明することができますか? – MartinW