2013-01-11 43 views
0

我在父視圖控制器A中有一個視圖控制器B.兩個視圖都顯示相同的時間。presentViewController和viewDidAppear沒有在iOS5.1/6中調用

鑑於控制器B,我試圖通過以下的方法以呈現新視圖控制器:

- (void) buttonClicked:(id)sender 
{ 
    MyViewcontroller *vc = [[MyViewcontroller alloc] init]; 
    [self presentViewController:vc animated:YES completion:nil]; 
} 

視圖控制器在iOS6的正確顯示和我通過使用以下方法解僱MyViewController

- (IBAction)backButtonPressed:(id)sender { 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

但有

QN1的iOS 5.1和iOS 6之間的差:在解僱視圖控制器,A & B viewDidAppear未被調用。它應該被觸發嗎?我不能讓MyViewController在iOS 5.1.1中顯示。除非我作爲一個孩子容器中添加視圖控制器B到A:

[self addChildViewController:vcB]; 
[self.view addSubview:vcB.view]; 

通過增加孩子的控制器,我可以得到MyViewController顯示和視圖控制器,當它被駁回了&乙viewDidAppear將被調用。使用iOS6時也會調用viewDidAppear

我不確定這裏發生了什麼。

回答

1

答案1:viewDidAppear在您解除模態視圖時不會被調用。

答案2:如果您從「View-controller B」中呈現「MyViewController」,則視圖控制器B的視圖應該是視圖層次結構。

從這裏你可以得到更多的信息。 How to Presenting View Controllers from Other View Controllers

+0

對於#2,我做了一個'po [[UIWindow keyWindow] recursiveDescription]',並且視圖層次結構對我來說看起來很理智。 UIWindow - > UIView(視圖控制器A) - > UIView(視圖控制器B) - > UIButton。我不確定在哪裏看? –

+0

我還應該提到這是沒有'[self addChildViewController:vcB];',其中self =視圖控制器A. –

相關問題