頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


タブ間でデータを共有する

なんで今までこの方法に気が付かなかったんだろうね、という間抜けなお話。
タブに限らず、クラス間と言い換えてもいいのかも。

今作っているのはタブを使うアプリなのですが、各タブごとにviewControllerのクラスがあります。
仮に
Tab1ViewControllerクラス
Tab2ViewControllerクラス
Tab3ViewControllerクラス
とでもします。

これらに共通のデータを持たせたい、なんて場合にどうやるのがいいんでしょうかね?

頭と尻尾はくれてやる! NSMutableStringでタブ間データのやりとり

↑あああ、前にも似たようなこと書いてますな。
この時にはBOOL値を共有させたかったけど、BOOL値はポインタじゃないのでやり方がよくわからず文字列型としNSMutableStringを使った、って話でした。

ところが作っているうちに、共有させたい変数が増えてきまして、なにかとややこしくなってきてしまいました、、、

どうしたものかと考えたあげく、共有するデータを扱うクラスを新たに作り、その中でデータを管理するようにしました。

仮にDataManagerクラスとして、HogeAppDelegate.mでそのオブジェクトを作り、、、例えば
DataManager *dataManager= [[DataManager alloc] init];
ってな感じで作り、各タブのviewControllerに参照を渡します。

そうすると、各タブに渡すのはdataManagerだけでいいし、
dataManager.isFinish = YES;
ってな感じでBOOL値も文字列型にしなくてもすんなり扱えるし。

どういうデータを共有するのかってのをこのクラスにコメント書いておけばわかりやすいし、コードもすごくすっきりしました。




<< drawRect:内でUILabelオブジェクトを作ったらダメなの?  TopPage  どちらのクロップが速いか調べてみた >>

コメント

有益な情報をありがとうございます。
同じような問題でハマっているものです。

XCode4で、NIBからTaBBarを作成しているのですが、
具体的にどのようなソースになるのが、ご提示していただくことは可能でしょうか?

2011.09.12   tate_tate   編集

Re: タイトルなし

> XCode4で、NIBからTaBBarを作成しているのですが、
> 具体的にどのようなソースになるのが、ご提示していただくことは可能でしょうか?

IB使ってないのでよくわかりません、すんません。

2011.09.13   たつや   編集

>DataManager *dataManager= [[DataManager alloc] init];
>ってな感じで作り、各タブのviewControllerに参照を渡します。
とありますが、ここだけを抜き出したサンプルソースを見せていただくことは可能でしょうか?

2011.09.13   tate_tate   編集

Re: タイトルなし

> >DataManager *dataManager= [[DataManager alloc] init];
> >ってな感じで作り、各タブのviewControllerに参照を渡します。
> とありますが、ここだけを抜き出したサンプルソースを見せていただくことは可能でしょうか?

サンプルをgithubに置いてみました。

2011.09.15   たつや   編集


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/454-24bfdf5f




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad