”Preference.h”ファイルに以下の赤文字のアウトレット"resetPreference"と、アクションメソッド'resetPreference:"を追加して保存します。この"resetPreference"は、"Preferannce=環境設定"パネルに設置することで、ユーザーが変更した環境設定を、アプリ起動時の初期値に戻すリセットボタンになります。また"resetPreference:"はこのリセットボタンが押された時に呼び出され、初期値に戻すメソッドになります。
@interface PreferenceController : NSWindowController {
IBOutlet NSColorWell *colorWell;
IBOutlet NSButton *checkbox;
IBOutlet NSButton *resetPreference;
}
- (IBAction)changeBackgroundColor:(id)sender;
- (IBAction)changeNewEmptyDoc:(id)sender;
- (NSColor *)tableBgColor;
- (BOOL)emptyDoc;
- (IBAction)resetPreference:(id)sender;
@end
IBOutlet NSColorWell *colorWell;
IBOutlet NSButton *checkbox;
IBOutlet NSButton *resetPreference;
}
- (IBAction)changeBackgroundColor:(id)sender;
- (IBAction)changeNewEmptyDoc:(id)sender;
- (NSColor *)tableBgColor;
- (BOOL)emptyDoc;
- (IBAction)resetPreference:(id)sender;
@end
ヘッダファイルの編集が終わると、実際にパネルにリセットボタンを設定します。
”Interface Builder”で"Preference.xib"ファイルを起動して、左図の感じでリセットボタンを新たに設定します。その後”File's Owner”とリセットボタン間で、お互いターゲットとしてボタンを、アクションメソッドとして"resetPreference:"を接続します。
次に"Preference.m"ファイルにアクションメソッド'resetPreference:"を実装します。P209に、アプリ起動後にユーザーが変更した環境設定は、"removeObjectForKey:"メソッドで初期値に戻す事ができると記載してありますので、そのまま使ってみます。
最後の赤文字の2行は、ユーザーに設定値が元に戻った事を伝えるために、環境設定パネルのカラーウェルの表示色と、チェックボックスのチェック状態をアプリ起動時の初期値に戻しています。ユーザーフレンドリーのため「環境設定ウィンドウを更新し、新しいデフォルトが反映されるように」するためのコーディング(処置)です。
- (IBAction)resetPreference:(id)sender {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults removeObjectForKey:BNRTableBgColorKey];
[defaults removeObjectForKey:BNREmptyDocKey];
[colorWell setColor:[self tableBgColor]];
[checkbox setState:[self emptyDoc]];
}
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults removeObjectForKey:BNRTableBgColorKey];
[defaults removeObjectForKey:BNREmptyDocKey];
[colorWell setColor:[self tableBgColor]];
[checkbox setState:[self emptyDoc]];
}
今回のチャレンジ問題はボタンとメソッドをひとつづつ設定するだけやったし、ヒントが比較的判りやすく記載されていたので、簡単でしたね。
例によってMacを使っていない方、Macのプログラミングにまったく興味の無い方、「ヒレガス本」を持っていない方にはなんのこっちゃ全然わからないでしょうが、ご勘弁を。
0 件のコメント:
コメントを投稿