iphone app で設定ファイルを利用する。
アプリの設定に関する情報については、便利な設定ファイル用のクラスがあるのでこれを利用すると便利。
こんな感じで色の設定とオン/オフのスイッチを配置して、設定するケースを考える。
まず。画面はモーダルでメイン画面への誘導のBackボタンを配置した。
このBackボタンが押された場合に、設定を保存する。
- (IBAction) backToMain{ NSLog(@"backToMain%@",@"_in"); NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:[srGunViewController getColorString:color1Segment.selectedSegmentIndex] forKey:@"color1"]; [defaults setObject:[srGunViewController getColorString:color2Segment.selectedSegmentIndex] forKey:@"color2"]; [defaults setBool:counterSw.on forKey:@"countFlg"]; [defaults synchronize]; [self dismissModalViewControllerAnimated:YES]; NSLog(@"backToMain%@",@"_out"); }
NSUserDefaults クラスを使う。
ここでは、キー「color1」にsetObjectメッセージを利用してオブジェクトを登録している。
Bool値を登録する場合は、setBoolを利用する。
そして最後に設定を保存する。「synchronize」メッセージを送る。
次に、設定ファイルを読み込む側の実装。
このケースでは、画面表示に関する設定を行っているので、
- (void)viewWillAppear:(BOOL)animated{ NSLog(@"viewWillAppear%@",@"_in"); // 設定ファイルのロード [self defaltSettingLoad]; [self setLabelColor:nomalColor]; [self countOptionLoad]; NSLog(@"viewWillAppear%@",@"_out"); }
ビューが表示される前に設定を読み込み、それを反映して色を変更する処理を記載。
ここでローカルメッセージ「defaltSettingLoad」を定義し、その中で[defaults stringForKey:@"color1"]を呼び出す。
Bool値の場合は、[defaults boolForKey:@"countFlg"]このような感じ。
- (void) defaltSettingLoad{ NSLog(@"defaltSettingLoad%@",@"_in"); NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; if (![defaults stringForKey:@"color1"]) { // 書き込む [defaults setObject:@"greenColor" forKey:@"color1"]; [defaults setObject:@"greenColor" forKey:@"color2"]; [defaults setBool:YES forKey:@"countFlg"]; [defaults synchronize]; } nomalColor = [srGunViewController getColorByName:[defaults stringForKey:@"color1"]]; countFlg = [defaults boolForKey:@"countFlg"]; NSLog(@"defaltSettingLoad%@",@"_out"); }
あとは、初期実行時で設定ファイルに存在しない場合があり得るので、それを書き込む異例処理を記載。
(それをviewAppearedでやるのは微妙だけど、とりあえずです)
おしまい。