今回の備忘録は、iPhone-アプリで複数画面が遷移するパターンの場合、変数を引き継ぎたい事ってよくあるよね〜。
例としては、
viewController1に書かれた変数を
viewController2で利用するという感じ。
例えば、具体的には、
tableControllerで選択したあと、
table-cellのタイトルを取得したい時など。
ググってみて、他サイトを参考にやってみました。
http://cocoadays.blogspot.jp/2010/07/uiviewcontroller.html
ここでは、「synthesize」を使って受け渡してます。
しかし、
いろいろやってみたがスマートな方法に辿り着かず、appDelegate上でのグローバル変数を使うことにしました。
記述する方法は以下のとおりです。
@property (nonatomic) NSString *hoge;
@synthesize hoge;
//* 値の書き込み(どのviewControllerでもOK)
AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
delegate.hoge = cell.textLabel.text;
//* 値の読み込み(どのviewControllerでもOK)
AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSLog(@"%@",delegate.hoge);
とりあえず、3時間ぐらいかかって、悩んだ挙句のやっつけ作業になったけど、VCに依存しないこの方法が一番いいのかも・・・と言い聞かせてます。
今度はシングルトンを勉強して、もう少しスマートにしたいです。
0 件のコメント:
コメントを投稿