とりあえずtabは「rootディレクトリ」で開いておけばいいや、と気軽にやっていたので、ここにきて苦労している。
たいした機能もないくせに、いたずらにViewとかControllerとかをたくさん使っているため、OutlineViewで選択されたディレクトリをTabのタイトルとして表示したり、TabのタイトルからOutlineViewの選択行を復元したり、としようとした時、どのControllerにどんなオブジェクトを渡していくか、常に困っている気がする。
今のところのClass構成はこんな感じ。
ネーミングのセンスないなあ、とがっくりくるけれど仕方がない。各クラスの機能を持たせ方とか、やっぱり自分でコード書いたり、人のコード読んだりしていく中でバランス感覚を学ぶしかないのだろう。
本日は「現在表示中のTabの、ディレクトリ名をUserDefaultsに保存する」ことだけやってみた。
[[NSUserDefaults standardUserDefaults] setInteger:[tabBar tabsCount] forKey:@"TabsCount"]; [[NSUserDefaults standardUserDefaults] setObject:[tabBar tabsTitle] forKey:@"TabsTitle"];
これだけかい?という。(^^;)
tabsTitleはNSArrayで各Tabのタイトル(の元になっているディレクトリ名のフルパス)を返すメソッド。こんな感じ。
-(NSArray*)tabsTitle{
NSMutableArray *titleArray=[NSMutableArray array];
NSArray* tabs=[self subviews];
for (NSInteger i=0; i<[tabs count]; i++) {
Tab* tab=[tabs objectAtIndex:i];
[titleArray addObject:[tab title]];
}
return [[[NSArray alloc]initWithArray:titleArray]autorelease];
}
NSArrayを保存するのは初めてなのでうまくいってちょっとうれしかった。
現在はNSStringをaddObjectしているが、これを様々な情報をつめこんだNSDictionaryにしていく、と。このあたり、ちゃんとやったことないのでなかなか勉強が進まない。荻原本を読んでいる時間が長くなっている。
UserDefaultsって、環境設定でしかいじったことなかったからなあ。

0 件のコメント:
コメントを投稿