★本日の進捗報告
今日は調べものでコーディングはなし。
昨日の問題は昨日の記事に追記で書いたが、「+ (void)initialize」を「- (void)initialize」と間違えて書いていただけで+に直したら正常に動いた。
だが、「初期値に戻す」ボタンを実装しようとして悩む。
なんも考えずおばかなことをするならば、initializeに書いてあるコードを環境設定パネルの「初期値に戻す」ボタンのActionにコピペして、環境設定パネルをリフレッシュ(正確な呼び名はわからん)すればいいと思うんだが、無駄というか修正するときには両方修正しないとおかしなことになる。(バグの元)
つまりやりたいのは初期値に設定する部分を共通化して、initializeと、ボタンのActionからメソッド呼び出しできればいいんだが…はて?
んで、ちゃぼさんが教えてくれたページには、「初期値に戻す」ボタンを実装するにはNSUserDefaultsControllerを使うとやら書いてあったのだが、実際にどうするかまで書いてないのでわからない。
Appleの同様な記事にも具体的なボタンの実装方法が書かれていない。うーむ。
また、HMDT Second Editionの説明を読んでみたがいまいちやりたいこととずれている。
もうひとつの悩みは、環境設定パネルで例えばメインウィンドウのTextViewの文字色や背景色を設定変更して「適用」ボタンを押した場合、メインウィンドウのTextViewにどうやって設定するのか。
AppControllerからPreferences PanelをshowWindow:しているのだが、showWindowをオーバーライドしてsenderを保存しておいてそれからAppControllerのメソッドを呼び出せばいいのかな?
こういうクラス間の呼び出しかたがいまいちピンとこないなあ。
★明日の予定
- 「初期値に戻す」ボタンはとりあえず置いといて、「適用」ボタンの方をコーディングして試してみようかと。
- できれば既存の本体部分への設定値の反映のコーディングまで完了したい。











ぞうさん、お疲れさまです。
●AppControllerクラスのポインタ
showWindowをオーバーライトして、senderを保存しなくても以下の方法で取得できます。
id appController = [NSApp delegate];
●クラス間通信
NSNotificationCenter,NSNotificationクラスが簡単で便利です。
個人的には、後者をおすすめします。後々のメンテナンスが比較的楽ですし。