1

タブバーコントローラーによって制御される2つのビューがあります。

私が抱えている問題は、2番目のタブから1番目のタブに戻るときに、2番目のタブで行った変更に基づいて1番目のビューのすべてのデータを再ロードする必要があるということです。

多くの回避策を伴う過度に複雑なコードでの私の失敗した試みはおそらくあなたを驚かせるので、理由を説明しない方がおそらく良いでしょう。

したがって、基本的に、別のタブからビューに戻ったときに、viewDidLoadを取得して自分自身をやり直すことはできますか?

編集:そして答えは:viewDidLoadの代わりにviewWillAppearだと思います(8時間自分の質問に答えることはできません)

4

1 に答える 1

0

viewDidAppearで毎回リロードするのではなく、ほとんどの場合、ビュー1にメッセージを送信して、次に表示されたときにリロードするように指示する方がよいでしょう。これにより、不要なリロードが回避されます(これは、ユーザーエクスペリエンスに悪影響を及ぼし、不要な帯域幅を使用する可能性があります)。アプリの画面の流れに応じて、これを行う方法はいくつかあります。それを行う1つの方法は次のとおりです。

-ビュー1でivarBOOLshouldReloadを作成します

-ビュー1のリロードが必要なビュー2(またはアプリケーションの他の場所)で何かが発生した場合は常に、「View1ShouldReload」などのメッセージを[NSNotificationCenterdefaultCenter]に投稿してください。

-ビュー1のロード時に、shouldReloadフラグをNOに設定し、リスニングを開始します

-通知セレクターで、shouldReloadをYESに設定します

-viewDidAppearで、(shouldReload)をチェックしてから、リロードを実行します。

これを行うには他にも多くの方法があります(デリゲート、シングルトンなど)が、これはアプリをより効率的に動作させるための簡単な方法です。

于 2012-05-10T01:02:53.237 に答える