2010-08-09 73 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; 
}  
相关问题