2016-01-29 29 views
0

我有2個VC,A和B,當A呈現B作爲FormSheet類型時,方法viewWillDisappear在A中沒有調用。所以當我在B中做某件事,然後回到A時,ViewWillAppear沒有被調用。那麼如何讓A中的viewWillAppear叫?我見過某處,但我沒有找到明確的答案。爲什麼viewWillAppear不是調用,而是將另一個ViewController作爲FormSheet使用

在BI設置:

protocol CallBackViewWillAppearDelegate: class { 
    func callBackViewWillAppear(controller: UserRightRoleTableViewController) 
} 

並委派變量:

weak var callBackViewWillAppearDelegate: CallBackViewWillAppearDelegate? 

,並在返回按鈕:

@IBAction func backToUserRightButtonAction(sender: AnyObject) { 
     callBackViewWillAppearDelegate?.callBackViewWillAppear(self) 
     dismissViewControllerAnimated(true, completion: nil)   
    } 

在AI導入協議並設置協議功能:

func callBackViewWillAppear(controller: UserRightRoleTableViewController) { 
     viewWillAppear(true) 
    } 
+0

不要直接從'callBackViewWillAppear'調用'viewWillAppear'方法。否則,你的應用程序會多次調用'super.viewWillAppear'方法。 – mbelsky

+0

不,因爲我忘了爲callbackViewWillAppearDelegate :)設置值。當我設置時,它就會工作。 – Khuong

回答

0

它無法運行,因爲我忘了在控制器中加入這一行:

// b is a object of B ViewController 

b.callBackViewWillAppearDelegate = self 

現在的工作。

0

方法viewWillDisappear不針對A控制器調用,因爲它停留在視圖層次結構中。

+0

是的,我知道,但正如我問的問題,如何處理這種情況。但無論如何,我現在已經修復了它。謝謝 – Khuong

相關問題