导航控制器在iPhone上弹出视图时如何执行操作?

时间:2010-08-09 20:19:58

标签: iphone uinavigationcontroller navigationcontroller

当用户点击导航控制器上的后退按钮时,我想做一些保存工作。这只能通过实施

来实现
- (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的按钮,我不想让保存完成。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您通常在视图控制器的“viewWillDisappear:”方法中执行此类操作。

是的,如果你要继续前进,它也会激活,但是如果你打算推出别的东西,你可以标记这个让方法知道 - 无论如何,无论什么时候保存都可能是个好主意...