★本日の進捗報告
「初期値に戻す」ボタンについてこちらの記事(続きの記事も)を読んだら大体やり方がわかったので実装。
- まず、UserDefaults.plistを作成し、初期値を設定する。ちなみにNSColorをNSDataに変換したものを設定するのには、それ以前に試しているうちにできていたplistから設定値をコピペ。
- Appleのドキュメントのリスト2のsetupDefaultsのメソッドをコピペ。
- setupDefaultsの中のresettableUserDefaultsKeys=のValue1,Value2…を自分の初期値に戻したいキー名に変更。(ちなみにキー名とキー値(文字列定数)の定義はあらかじめやっておく。)
- initializeからsetupDefaultsを呼ぶ。
- Preferences.xibを開いて、配置したパーツのバインディングをすべて設定する。(キー名はUserDefaults.plist並びに上記3の定義と一致させておく。)
- 「初期値に戻す」ボタンをShared User Defaults ControllerのrevertToInitialValues:に接続する。
以上、説明をかなり端折っているがビルドして動かしてみると「初期値に戻す」ボタンを含めちゃんと思い通りに動いた。パチパチ。ちなみに先に作ったActionのコードはすべて不要になった。よきにはからえとはこういうことなのだな。すげえ楽ちん。
あと、昨日書いた今日の予定の2「できれば既存の本体部分への設定値の反映のコーディングまで完了したい。」はサーバー接続あたりは反映した。
次に、設定した値を適用する方法だが、昨日書いたshowWindow:senderのsenderをインスタンス変数にとっとくやり方でやってみたらまあできたことはできたんだが、このPDFドキュメントを読んでみるとPreferenceControllerの初期化メソッド(initWithAppControllerとか)で渡してとっとくのがパターンらしく、とりあえずそうしてみることにする。(現時点でまだ実装が完了していない。)
上記のPDFドキュメントはアプリケーションの設計を考えるには有益なものだと思う。一読の価値あり。ただ、今作ってるのとは設計方針がちょっと違ってたりもするけど。(^_^;
オブジェクト間通信の方法としては、ちゃぼさんが教えてくれたNSNotificationがスマートだとは思うのだが、前にやってみてうまく動かなかった(直接の原因はNSNotificationではなかったかもしれんが)のと、設定値と変更箇所が1対1なのでNSNotificationを使うまでもないかなあとも思ったり。使った方が楽になりそうになったら改めてやってみようかと。
★明日の予定
- 今日の続き。ただし「適用」ボタンはやめて色変更したらActionですぐに反映させてしまう方法にしようかと。
- 既存の本体部分への設定値の反映のコーディング(IRCサーバーからのメッセージ解析部)まで完了する。
- ここまでやるとPreferencesパネルは大方終わるので次からNSTableViewのコーディングに移る。











「初期値に戻す」、できたんですね。すご〜い。(^-^)v
今度のアプリ作成(何を作るかまだ決めてないけど)で参考にさせてもらいますね。
Cocoaバインディングは、ややこしくて逃げていた。ぞうさんに先を越されたなあ…。