2012-03-03 3 views
1

データをAppDelegateに渡す方法が不思議です。のは、私はこのスキームAppDelegateにデータを渡す

AppDelegate - > RootViewController -> FirstViewController -> SecondViewController. 

SecondViewControllerはAppDelegate applicationWillTerminateメソッドが呼び出されたときに保存すべきデータを持っているとしましょう。私はアプリケーションでデータを共有するためにシングルトンを使うことができますが、私はこのアプローチが気に入らないことを知っています。このシナリオでは通知が機能しないようです。

私に何をお勧めしますか?

答えて

4

これは、そのデリゲートを取得する必要があります。

AppDelegate * delegate =(AppDelegate*) [UIApplication sharedApplication].delegate 
[delegate callSomeMethod:someData]; 
+0

私にいくつかの例を教えてもらえますか? – OhDoh

+0

今更新されました。 – madmik3

+0

ありがとうございます。今、私は分かる。データを直接applicationDidEnterBackgroundに渡すことは可能ですか? – OhDoh

1

あなたのための他の提案。あなたは(のように好きな場所今、あなたがした後、そのデリゲートにアクセスすることができます

+ (AppDelegate *)getAppDelegate; 

してからAppDelegate.mで

+ (AppDelegate *)getAppDelegate 
{ 
    return (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
} 

:あなたのAppDelegate.hクラス内では、次のようなクラスメソッドを作成することができますインポートされたAppDelagate.h)。

AppDelegate* sharedDelegate = [AppDelegate getAppDelegate]; 

カテゴリを作成してそこにコードを挿入すると、よりクリーンな方法が可能です。

私の質問は、なぜ、デリゲート内にデータを保存する必要があるのですか?たぶんあなたはシングルトンを代わりに使うことができます。詳細はsingletons-appdelegates-and-top-levelを参照してください。

希望します。

関連する問題