2012-03-08 38 views
4

我有具有這種方法的UIViewController:我有以下viewDidDisappear不叫時使用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]; 
} 

在第二視圖控制器(SendMsgViewControllerviewDidLoad

[self presentViewController:picker animated:YES completion:NULL]; 

其中選擇器是一個UIImageViewPicker

問題是,當我調用方法openSendVC時,會打開一個新的控制器,但不調用viewWillDisappear(第一個viewController的)。

回答

6

這是正確的行爲。以下是關於viewWillDisappear:UIViewController API docs的摘錄:

這種方法被稱爲響應於從視圖視圖體系被除去。在實際刪除視圖之前以及配置任何動畫之前調用此方法。

呈現新視圖控制器,使得其隱藏其他視圖控制器不能算作視圖消失僅實際從一個視圖層次結構確實除去(例如,與像popViewControllerAnimated:)。

+0

但我觀察到,呈現視圖控制器上顯示viewDidDisappear呈現'UIModalPresentationFullScreen'模式,但不與'UIModalPresentationFormSheet'模式。 – Hlung 2017-08-14 08:07:48

相關問題