0

ナビゲーションコントローラーによってプッシュされるコントローラーの場合、initプッシュされたコントローラーのビューの詳細を目的の方法で作成する場合、ビューが画面外にあるために後で削除される場合 (たとえば、メモリ不足のため)、initはビュー コントローラのロード時に 1 回だけ呼び出され、その後のプッシュでは何も表示されない可能性があるため、二度と表示されない可能性があります。

このビューの設定はviewDidLoadまたはviewWillAppearにある方がよいように思われます。そうすれば、コントローラーが次にプッシュされたときにビューを構築する必要がある場合に正しく再作成されます。

それでも、プッシュされたView Controllerのビュー設定をinitメソッドに入れるチュートリアルがよく見られます。これはどれほど重要ですか?

4

1 に答える 1

3

ビューのセットアップは、まさにあなたが説明している理由から、でviewDidLoad(ペン先を使用していない場合はで)行う必要があります。loadViewサブビューを設定するためにコントローラのトップレベル ビューの寸法を知る必要がある場合は、 で行いviewWillAppear:ます。

通常、ポップされたView Controllerはすぐに割り当て解除されます。アプリが後で同じビューを表示する必要がある場合は、新しいビュー コントローラーを作成します。したがって、そのシナリオでは、アプリは「何も」表示しません。

アプリが最初のビュー コントローラーの上に別のビュー コントローラーをプッシュまたは提示する場合、最初のビュー コントローラーのビューをアンロードできます。アプリが最初のビュー コントローラーを介して 2 番目のビュー コントローラーをプッシュまたは提示しない場合、最初のビュー コントローラーのビューは、コントローラーがポップされるまでアンロードできません。その場合、ビューを設定してもinit問題はありません。

しかし、 でビューを設定するのは依然として悪い設計initです。後でアプリを変更して、2 番目のビュー コントローラーをプッシュまたは提示すると、予期しない危険な動作が発生する可能性があります。

また、View Controller を作成し、それにプロパティを設定してからプッシュすることも一般的です。プロパティがコントローラーのビュー階層に影響する場合はinit、ビューをセットアップするには時期尚早です。

于 2012-05-25T04:56:20.653 に答える