2011-01-18 7 views
0

ViewControllerを提示すると、提示されたコントローラはそのviewDidLoadメソッドを実行しますか?ViewControllerを提示する

view1がロードされ、別のものが提示された場合。次に、何かがview1を提示するようにトリガする。 viewDidLoadメソッドを実行しますか?

どうすればいいですか? ViewDidAppear?

答えて

4

ビューがメモリにロードされると、viewDidLoadが呼び出されます(通常、ビューのコントローラはアプリの起動以来初めて表示されるようになっていますが、これで十分です)。

他のビューコントローラを表示してから元の「view1」ビューコントローラに戻ったときに、メモリからそれを投棄したメモリイベントがない限り、再度viewDidLoadはコールされません。代わりに

、それがために、次のように呼び出します:viewWillAppear:

  1. viewWillAppear:
  2. viewDidAppear:

を、あなたはあなたのビューコントローラの前に "画面オフ" のことを行うための場所を持っています表示されています。

viewDidAppear:には、ビューコントローラーのビューが既に表示されているときに適切な追加の操作を実行できます。たとえば、ビューコントローラが完全に表示されたら、ユーザーに表示される少しのアニメーションを実行したいとします。

これらの両方の方法では、何かをする前にスーパーの実装を呼び出すようにしてください。また、このライフサイクルについて知るには、これらのメソッド(viewDidLoad、viewWillAppear、viewDidAppear)のそれぞれにブレークポイントまたはNSLog()ステートメントを設定して、それらが呼び出されたタイミングを確認します。

View Controllerに関するアップルのドキュメントには20分分の価値があります。View Controllerに関するこの重要なライフサイクル情報をクリアします。これらはiOS開発のです。

http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/BasicViewControllers/BasicViewControllers.html%23//apple_ref/doc/uid/TP40007457-CH101-SW1

+0

事があり、私はのViewControllerの新しいインスタンスを作成し、それを提示:セクションで、「表示管理ライフサイクルを理解する」を参照してください。 View1の新しいインスタンス – jarryd

+0

多くの場合、同じView Controllerインスタンスを再利用するため、上記のコメントはその意味で保持されます。あなたのケースでは、あなたのアプリケーションのさまざまな時点で新しいオブジェクト( "view1")をインスタンス化している場合、私はそれぞれの新しいインスタンス化が "viewDidLoad"へのヒットをトリガーすると思います。 私は "name"のようないくつかのプロパティ変数を設定します。これらのプロパティ変数は、これらのいずれかをインスタンス化するたびに設定できます。それを行う。次に、viewDidLoadで、次のようなものを吐き出してください: NSLog(@ "viewDidLoadでは、例えば名前が%@"で、self。名); このログ出力シーケンスを検討すると、計画できる決定的なパターンが表示されます。 – idStar

1

viewDidLoadは、ビューがメモリにロードされたときにのみ呼び出されます。通常、最初に表示されます(メモリダンプなどがある場合は、より頻繁に表示される可能性があります)。

viewDidAppear:viewControllerのビューがウィンドウ内の「アクティブな」ビューになるたびに呼び出されます。

関連する問題