[self undoManager]
ドキュメントベースのアプリで、子ウィンドウがゼロになるのはなぜですか?
親ウィンドウの元に戻るマネージャーを参照するべきではありませんか?親ウィンドウで、UNDOマネージャーの実際のアドレスを取得します!
[self undoManager]
ドキュメントベースのアプリで、子ウィンドウがゼロになるのはなぜですか?
親ウィンドウの元に戻るマネージャーを参照するべきではありませんか?親ウィンドウで、UNDOマネージャーの実際のアドレスを取得します!
はundoManager
NSWindowControllerのメンバーではありません。これは単なるNSDocumentの「機能」です。
NSDocumentドキュメントからの抜粋:...ドキュメントは、ウィンドウの編集済みステータスを管理し、元に戻す操作とやり直し操作を実行するように設定されています。...。
セクション「NSDocumentのサブクラス化」:
....サブクラスは、ドキュメントウィンドウを管理するウィンドウコントローラーの作成と、元に戻すおよびやり直しの実装も担当します。...。
作成したコードは、存在しないオブジェクトにメッセージを送信するため、他の強い型の言語では機能しません。ここでコンパイラの警告が表示されるはずです。
お役に立てれば、
一番、
Flo
Floの答えは良い出発点でした。しばらくして、レスポンダーチェーンが何らかの形で機能していることが判明しました(または、私かもしれません:-))。
によって制御される子ウィンドウには、このウィンドウに関連付けられたドキュメントを返すようNSWindowController
に、自動的に(??)ドキュメントプロパティが必要です。[self document]
そこからUndoマネージャーを引き出すのは簡単です。
ただし、私のアプリケーション(および小さなテストアプリでも)では、このドキュメントは設定されていません。ドキュメント([newWindow setDocument:self]
)内から手動で設定すると、元に戻す/やり直しアクションの登録、メニューバーなど、すべてが機能します。