2012-03-08 6 views
4

私はこの方法有するUIViewController有する場合viewDidDisappearが呼び出されない:私は以下た第2のビューコントローラ(SendMsgViewControllerviewDidLoadにおいて使用presentViewController

- (void)viewWillDisappear:(BOOL)animated { 
    [super viewWillDisappear:animated]; 
    NSLog(@"DISAPPEAR"); 
    lastKnownOrientation = [self interfaceOrientation]; 
} 


-(void)openSendVC{ 
    SendMsgViewController *vc = [[SendMsgViewController alloc]initWithNibName:@"SendMsgViewController" bundle:nil]; 
    [self.navigationController pushViewController:vc animated:NO]; 
} 

を:

ピッカーが UIImageViewPickerある
[self presentViewController:picker animated:YES completion:NULL]; 

を。

openSendVCメソッドを呼び出すと、新しいコントローラが開きますが、最初のviewControllerのviewWillDisappearは呼び出されません。

答えて

6

これは正しい動作です。ここでUIViewController API docsからviewWillDisappear:についての抜粋です:

このメソッドは、ビュー階層から削除されたビューに応じて呼ばれています。このメソッドは、ビューが実際に削除され、アニメーションが設定される前に呼び出されます。それが消えるだけの実際(popViewControllerAnimated:のようなもので、例えば)ビュー階層んから削除されるビューとしてカウントされません、他のビューコントローラを隠すように、新しいビューコントローラを提示

+0

しかし私は 'UIModalPresentationFullScreen'モーダルを提示しているプレゼンテーションビューコントローラ上でviewDidDisappearが呼び出されているのを観察していますが、' UIModalPresentationFormSheet'モーダルではありません。 – Hlung

関連する問題