2010-08-09 72 views
0

我想在用戶點擊導航控制器上的後退按鈕時進行一些保存操作。這是隻有實行如何在導航控制器在iPhone上彈出視圖時執行操作?

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
{ 
    int index = [[self.navigationController.viewControllers] indexOfObject:[self.navigationController.visibleViewController]]; 
    if(viewController == [[self.navigationController.viewControllers] objectAtIndex:index-1]) 
     //saving code here 

所以當它要顯示一個視圖控制器的委託被調用成爲可能。有沒有更好的方式知道視圖控制器何時會彈出?

我無法使用viewWillDisappear,因爲有一個顯示UIImagePickerController的按鈕,我不想保存完成。有什麼想法嗎?

+0

以及你寫在一個視圖控制器獲取的彈出的代碼,所以你可以做你的儲蓄在那裏。關於使用代表有什麼優雅之處? – thelaws 2010-08-09 20:23:22

+0

嗯,我的意思是我能看到做到這一點的唯一方法,但是當某些東西被彈出時需要做某些事情似乎是一件常見的事情,所以我認爲還有另一種方式來做到這一點。對於上面的代碼沒有任何優雅,它看起來像是一個「騙子」的方式來完成工作。也許它只是我。 – marty 2010-08-09 20:27:39

+0

實際上上面的方法都不行。所以問題就出現了。 – marty 2010-08-09 20:41:51

回答

0

您通常會在視圖控制器的「viewWillDisappear:」方法中執行類似的操作。

是的,它也會激活,如果你前進,但你可以標記,讓方法知道你是否打算推出其他的東西 - 無論如何這是一個好主意。 。

1

或者

- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem  *)item 
{ 
    //insert your back button handling logic here 
    // let the pop happen 
    return YES; 
}  
相關問題