Как выполнить действие, когда навигационный контроллер выскакивает на iPhone? - PullRequest
0 голосов
/ 10 августа 2010

Я хочу сделать кое-что для сохранения, когда пользователь нажимает кнопку «Назад» на навигационном контроллере. Это возможно только путем реализации

- (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 ]

1 голос
/ 13 января 2012

или

- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem     *)item
{
  //insert your back button handling logic here
  // let the pop happen
  return YES;
}     
0 голосов
/ 10 августа 2010

Обычно вы делаете такие вещи в методе "viewWillDisappear:" контроллера представления.

Да, он также будет активирован, если вы идете вперед, но вы можете пометить это, чтобы метод знал, если вы намеревались запустить что-то другое - и это, вероятно, хорошая идея, чтобы сохранить независимо от того, что в этот момент в любом случае ...

...