iOSのアプリによくある設定用のテーブルをデータ化する その2
iOSのアプリによくある設定用のテーブルをデータ化する の続きです。
iPhoneで良く見かける、こんな感じの画面をデータ化してみた。
最終的には、リソースファイルなどで定義できるようにすることが目標だけど、現時点では次の ように、ソースコード上でデータを定義している。
self.settingList = [[SettingList alloc] init]; SettingCongrollerFactory* factory = [[SettingCongrollerFactory alloc] init]; NSInteger tag = 1; Setting* setting = [factory createBoolSetting:@"repeat" tag:tag++]; [self.settingList addSetting:setting]; setting = [factory createBoolSetting:@"isRandam" tag:tag++]; [self.settingList addSetting:setting]; setting = [factory createSelectSetting:@"playmode" tag:tag++ values: [NSArray arrayWithObjects: @"normal", @"album", @"repeat", nil]]; [setting setValue:@"normal"]; [self.settingList addSetting:setting]; setting = [factory createBoolSetting:@"sleep mode" tag:tag++]; [self.settingList addSetting:setting];
現在のところ、boolと値(object)の選択のみに対応。次は数値設定にトライしたい。
実装のイメージとしては次の通り
- settingオブジェクトは、1設定項目の値を表現している。
- settingオブジェクトは、型に対応するsettingControllerオブジェクトを所有する。
- settingControllerオブジェクトは、tableViewCellとsettingの仲介を行う。(tableViewCellへの値の表示。tableViewCellからの操作をsettingへ通知。settingの値の変更をviewへ通知)
- settingListはUITableViewDataSourceと同等の責務を持つ。(section数やrow数,indexPathに対応するsettingを返すなど)