2017-08-31 4 views
0

私はタブバーコントローラを持っており、タブの1つは私のホームスクリーンで、もう1つは設定ページです。設定ページでは、ユーザーはNSUserDefaultsに保存されたものを編集できますが、ホームタブに戻ると、ビューが既にロードされているため、これらの変更はすぐには反映されません。そのタブに戻ったときにビューを完全に更新するにはどうすればよいですか?タブがクリックされたときの自動リフレッシュビュー

+0

データがテーブルビューまたはコレクションビューに表示されている場合は、コントローラのViewWillAppearメソッドでいずれかをリロードすることができます。 –

+0

@TusharSharmaデータはラベルで表示されます。タブがクリックされるたびにViewWillAppearが実行されますか? –

+1

ViewWillAppearは、ビューが表示されるたびに呼び出されます。 –

答えて

0

viewDidLoadは、ビューコントローラのビューが最初にロードされたときにのみ呼び出されます。そのビューの後にはメモリ内に残るため、一般的にビューコントローラの別のインスタンスを作成するまで再び呼び出されません。

したがって、書いたかもしれないviewDidLoad()のロジックを書き込むのではなく、viewWillAppear()にコードを書いたり書き込んだりすると、ビューが現れたときにこのメソッドが呼び出されます。ここでNSUserDefaultsの値に既存の値を上書きする新しい値が設定されます。

//希望は私はそれはあなたがビューをリフレッシュしたいときに依存します:)

0

コーディングハッピー、何とかあなたを助けることができました。

1.表示が開かれるたびに更新しますか? 2.設定が変更されたときにのみビューを更新しますか?

最初の場合は、viewWillAppearにリフレッシュロジックを書きます 2番目の場合は、代わりにユーザー設定が変更されたときに通知を追加できます。 HomeVCで

オブザーバーとしてその通知を追加し、通知投稿するためその観測方法

コードのラベルを更新します。HomeVC ViewWillAppearで

:通知を受信するための

[[NSNotificationCenter defaultCenter] postNotificationName:@"settingsChanged" object:nil]; 

コード:

[[NSNotificationCenter defaultCenter] removeObserver:self]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshViews:) name:@"settingsChanged" object:nil]; 

met hod on HomeVC

- (void)refreshViews:(NSNotification *)notification { 
NSLog(@"Received Notification - Someone seems to have logged in"); 
} 
関連する問題