2013-03-28 117 views
0

我創建了三個視圖控制器,名爲ABCC視圖控制器是B視圖控制器的子視圖,同時執行A的視圖被推送到BC的視圖控制器委託方法viewWillAppear未調用。viewWillAppear不會在iOS中調用

+0

c視圖控制器是否顯示? – iPatel 2013-03-28 09:01:02

+1

請顯示代碼將C作爲「子視圖」添加到B的代碼。如果您不將其添加爲子視圖控制器,則不會獲得viewWillAppear消息。 – jrturton 2013-03-28 09:02:01

回答

0

你說的是c的視圖控制器是一個子視圖B.

我假設你做這樣的事情:

UIViewController *viewControllerB = [[UIViewController alloc] init]; 
UIViewController *viewControllerC = [[UIViewController alloc] init]; 

//add C's view to B 
[[viewControllerB view] addSubview:[viewControllerC view]]; 

如果是這樣,那麼你需要的viewController添加C作爲一個孩子的viewController B的

//you need to set C to be a child view controller of B 
[viewControllerB addChildViewController:viewControllerC]; 

這應該確保正確調用相應的viewWill/viewDid方法。

+0

謝謝你這幫了我很多 – datha 2013-04-03 09:30:26

+0

不客氣:] – CaptainRedmuff 2013-04-03 09:31:08

1

問題出在IOS版本。

同時加入了另一個視圖控制器的視圖(viewControllerC.view)作爲副視點現有的視圖控制器(viewControllerB)viewWillAppear:()和viewControllerC viewDidAppear:(),將不會觸發在IOS 5.0早期版本。如果您需要呼叫,則通過檢查設備ios版本手動調用此方法。

您可以檢查IOS版本和手動調用委託方法是這樣的...

[viewControllerB addSubview:viewControllerC.view]; 
if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) 
    { 
     [viewControllerC viewWillAppear:YES]; 
     [viewControllerC viewDidAppear:YES]; 
    } 
相關問題