7

ナビゲーションコントローラ付きのView Controllerが2つあります。 [self.navigationController popViewControllerAnimated:YES];を2番目のものに使用すると、最初のものが開きますが、viewDidLoadのメソッドは呼び出されません。この状況で最初の1つのコントローラで呼び出されるメソッドは何ですか?iosのタップバックボタンの後にどのメソッドが呼び出されるのですか

+0

ビューが既にロードされています。ポップするまでアンロードされません。新しい場合はARCを使用しないでください。私の推奨事項です。 –

+0

参照:http://stackoverflow.com/questions/1557290/how-to-trap-the-back-button-event – Senseful

答えて

23

ナビゲーションコントローラは、画面上の表示を入れる前に、ビューコントローラにviewWillAppear:を送信し、viewDidAppear:後。

内側viewWillAppear:およびviewDidAppear:の場合、ビューコントローラはself.isMovingToParentViewControllerをチェックできます。 isMovingToParentViewControllerYESの場合、ビューコントローラは最初にナビゲーションコントローラに追加されています(おそらく、ナビゲーションコントローラのルートビューコントローラまたはプッシュされているためです)。 isMovingToParentViewControllerNOの場合、ビューコントローラはすでにナビゲーションコントローラのスタックにあり、別のビューコントローラがポップされて表示されます。

“Handling View-Related Notifications” in the UIViewController class referenceを読んでください。

+2

iOSとの3年間の仕事の後、私はまだこれを知らなかった... – Nailer

1

この場合、viewWillAppearメソッドが呼び出されます。

-(void)viewWillAppear:(BOOL)animated 
{ 

} 
+0

ありがとう!今私はこれを作る方法を見る! – ShurupuS

+0

'[super viewWillAppear:animated];を呼び出すことを忘れないでください! :) – yujean

関連する問題