私は接続情報(クライアントID、サーバーアドレス、ポート番号)のplistを共有する3つのタブアプリケーションを持っています。ビューコントローラのそれぞれにおいて、NSUserDefaultsオブジェクトは、viewDidLoadメソッド内で初期化されています。私の意見のタブバーアプリケーション間でplistの同期
- (void)viewDidLoad {
[super viewDidLoad];
// load default settings into class instance variables
defaults = [NSUserDefaults standardUserDefaults];
self.clientID = [defaults objectForKey:@"clientID"];
self.serverAddress = [defaults objectForKey:@"serverAddress"];
self.serverPort = [defaults objectForKey:@"serverPort"];
}
一つは、ユーザーがPLISTに変更を加えることを可能にする「設定」ページを表します。 plistのが更新されたときしかし、同期は、オブジェクトごとに必要とされているため、変更は、タブビューのすべてに反映されていません。
[defaults synchronize];
私はviewDidLoadメソッドが唯一であることを学びました(少なくともTab Barアプリケーションの場合)アプリケーションの存続期間中に一度呼び出されるため、ここで同期呼び出しを行うことはできません。私はAppDelegateクラスに目を向け、tabBarControllerメソッドを発見しました。このメソッドを使用して、同期ボタンを必要とせずにすべてのView ControllerでNSUserDefaultsオブジェクトを同期させる方法を教えてください。これは、アプリケーションが開いている間に環境設定を共有/調整する正しい方法ですか?
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
// I need to synchronize somewhere in here???
switch (tabBarController.selectedIndex)
{
case 0:
NSLog(@"Tab 0 selected");
break;
case 1:
NSLog(@"Tab 1 selected");
break;
case 2:
NSLog(@"Tab 2 Selected");
break;
}
}
感謝を前もって:私は今でだのはここ
です。
さらに悪いことです。 viewWillAppearは、ビューが表示されるたびに呼び出されますが、viewDidLoadは、ビューがロードされたときに一度呼び出されます。 –
あなたはそれをviewWillAppearに置く必要があります。それ以外の場合は、各ディスプレイ(タブバーの切り替えビュー)で同期しません。 –
はい、それは私の主張でした。このようにしているというあなたのコメントは彼の方法よりも悪いですか?そうでなければ、私はあなたの最初のコメントを誤解しました。 – PengOne