Monthly Archives: June 2012

iOS Back Button Events

Well, I was struggling with this for a couple of days, and decided to share it.

We are developing an iphone version for our application and during the development I came up with the following problem.

We have a UINavigationController in our app that is responsible for managing the navigations.

In the navigationController we have a customized back button:

navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@”back” style:UIBarButtonItemStylePlain target:nil action:nil];

The problem with this button is that although it lets you define target and action for your logic in case of click, it is not calling them. This behavior is also explained in the apple documentation, but no solution is given to the problem.

So at this point if you want to add your logic when back button is pressed you may find yourself doing the following and reinventing the wheel:

However, there is a really simple solution that can be used:

If we are trying to simplify the problem, this is the scenario:

  1. Back button is pressed
  2. viewWillDisappear is called

So, we can insert our code in viewWillDisappear method. But (since we always have a but) this method can also be called when there is a new view that is pushed in the stack above our view, which makes it disappear.

How can we check this? Actually it is really simple 🙂

In the View Controller programming guide [] you can find out in which state the viewWillDisappear method is called, if it is by calling the back button so it returns to the parent controller or the new controller is pushed above.

The code should look like this:

– (void)viewWillDisappear:(BOOL)animated


[super viewWillDisappear:animated];

// Checking if we are disappearing because of the back button

if ([self isMovingFromParentViewController])


// In case that back button is pressed, insert your code here



Jane V

Chief App Developer

Price Rhythm


New Price Rhythm Intro Video

Price Rhythm
Personal Shopping Advisor