2010-09-22 69 views

回答

0

首先,我自己沒有嘗試過。 我不知道攔截點擊按鈕的方法。什麼「可能」工作如下:有UINavigationBarDelegate,其中包含navigationBar:shouldPopItem:事件。在navigationItem從navigationBar的堆棧中移除之前調用此事件,因此如果處理此事件,則可以執行任何要存檔的操作。

+1

OP沒有說明他們是否使用導航控制器。如果沒有,Phlibbo的建議是一個很好的建議;然而,如果有一個導航控制器參與,那麼我不認爲掛鉤導航欄委託是一個好主意,因爲它可能會打破導航控制器。在這種情況下,可能的選擇是使用UINavigationControllerDelegate中的navigationController:willShowViewController:animated:方法。 – Echelon 2010-09-22 14:25:12

0

「處理事件之前」建議您在用戶離開視圖之前清理或保存狀態。在這種情況下,我會使用viewWillDisappear:或viewDidDisappear :.如果您需要導航回來,導航「前鋒」來區分(如推VC,或呈現模式VC),你可能可以這樣做:

-(void)viewDidDisappear:(BOOL)animated 
{ 
    if (!self.parentViewController) 
    { 
    // back button pressed/modal VC dismissed/etc, hopefully 
    } 
} 

我沒有測試過這,但我的理解是,在Will層次結構改變之前調用「Will」 - 方法,之後調用「Did」 - 方法。

如果你正在保存狀態,你還應該處理UIApplicationWillEnterBackgroundNotification。