0

ナビゲーション ベースのアプリケーションがあり、子ビューにボタンがあり、タップすると popToRootViewController メソッドが呼び出されます。

-(IBAction)popToRootViewController
{
    [self.navigationController popToRootViewControllerAnimated:YES];
}

これにより、rootViewController の viewWillAppear メソッドが呼び出されるはずであり、ほとんどの場合に発生しています。ただし、rootViewController の viewDidLoad が呼ばれることがあります。その背後にある理由を見つけることができません。viewDidLoad が時々呼び出される理由を知っている人はいますか?

4

3 に答える 3

1

iOS 5 以前では、メモリが少ない場合にシステムがビューをアンロードすることがあります。

http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ViewLoadingandUnloading/ViewLoadingandUnloading.html

于 2012-10-22T10:46:29.557 に答える
0

viewDidLoadは、View Controller のビューが初めてロードされるときに 1 回呼び出されます。

viewWillAppearは、ビュー コントローラーのビューが初めて読み込まれるときに、viewDidLoad メソッドの後に呼び出されます。

これで、 navigationController でコントローラをプッシュまたはポップすると、可視コントローラの viewWillApperメソッドが確実に呼び出されます。

于 2012-10-22T10:46:34.330 に答える
0

viewDidLoadは、その名前が示すように、View Controller がそのビューをロードした直後に呼び出されます。ビュー コントローラーが最前面のコントローラーではなくなった場合、メモリを節約するためにそのビューを解放することがあります (以前は と を呼び出しviewWillUnloadviewDidUnloadいましたが、現在は iOS 6 で廃止されています)。これが発生した場合、再び前面に出たとき (または何かが を呼び出すたびにthecontroller.view)、ビューを再作成し (Nib ベースでない場合は を呼び出しますloadView)、次に を呼び出しますviewDidLoad

于 2012-10-22T10:46:38.630 に答える