0

少し奇妙な問題を除いて、うまく機能しているコアデータドキュメントベースのココアアプリがあります。

何らかの理由で、フィールドのいずれかに変更を加えた場合、メニュー/ウィンドウがそれを認識していないようです。赤い閉じるボタンは黒い「ダーティ」インジケータを取得せず、[ファイル/保存]メニュー項目は有効になっていません。ただし、(command-Qを使用して)アプリケーションを閉じようとすると、変更を保存するかどうかを尋ねるポップアップが表示されます。

ドキュメントのダーティフラグが設定されているようですが、ウィンドウ/メニュー項目がそれに反応していません。なぜそうなるのか、どこを見ればいいのか知りたいです。私のウィンドウがManagedObjectContextを知らないことに関係しているのではないかと思います...

わずかに異例の動作は、ドキュメントのmakeWindowControllersメソッドがオーバーライドされ、ドキュメントの[self addWindowController:xxx]メソッドの呼び出しを使用してウィンドウコントローラーを追加していることです。私のウィンドウコントローラーはNSWindowControllerからサブクラス化されているため、ManagedObjectContextを保持するために各ウィンドウコントローラーに独自のインスタンス変数を追加する必要がありましたが、これがウィンドウ/メニューに渡されていないようです。ここに通常のパターンが何であるかわからない...

とにかく、どんな考えでも大歓迎です。ありがとう

4

2 に答える 2

1

説明によると、UI 要素は実際にはドキュメント自体にバインドされていないようです。その場合、UI 要素はドキュメントを監視しておらず、ドキュメントの変更に反応していません。バインディングを確認します。

于 2011-03-18T15:55:22.450 に答える
0

一部は TechZen に感謝し、自分の質問を読み直しました (特に、「自分の ManagedObjectContext を知らないウィンドウに関係があるのではないかと思う」と言ったところで)、自分のバインディングを調べ始めました。 WindowController サブクラス。

結局のところ、ファイルの所有者のウィンドウアウトレットを実際の NSWindow にバインドしていませんでした。これを行うとすぐに、黒い汚れた点とウィンドウのメニューが正しく動作し始めました。

于 2011-03-18T22:01:12.287 に答える