とりあえず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 件のコメント:
コメントを投稿