I have the following structure AllTasks -> ConcreteTask -> SubTask. I use UINavigationController , user always may understand her currenct location: i.e. on ConcreteTask screen she has back button that takes her to AllTasks screen.

Say, Task1 is opened, and my app obtains new data for Task # 42. It displays alert (UIAlertController) saying "There is update for Task # 42. Do you want to open it?". User clicks "yes", and my app should open Task42 screen.

What should I do with my navigation in this case?

Idea 1:

Add Task42 to my navigation stack and open it.

So, navigation would be AllTasks -> Task1 -->Task42. When user click back button, app will open Task1 page.

I dislike this idea because it breaks navigation and confuses user. Instead of tree, we now have mess. What if user close my app and open it next day? She will see Task42 page with back button that takes her to some random task!

Idea 2 Drain navigation stack to AllTasks and then open Task42.

So, navigation would be AllTasks -->Task42. When user click back button, app will open AllTasks page. No more mess.

But I dislike this idea because it is not easy for user to go back to Task1. She probably spent some time reading Task1 and now my app simply closed it.

Does there is a beautiful way to solve it?

1 Answer 1


The second idea you propose makes the most sense out of the two. Since the user is warned of the udpate and asked to choose between taking action or resuming to the current task, it does not seem damaging to position directly into the new task. Don't forget that quality animation are required for the user to keep a sense of hierarchy and positioning while the transition is happening.

However, I question the use of an alert in the first place. Alerts are disruptive and blocking, impeding user progress. As mentionned in the iOS Human Interface Guidelines, alerts should be used cautiously. The presented table discusses alternatives: depending on the criticality of the incoming udpate, other options should be considered.

Banner notification

banner notification

A banner notification has several advantages:

  • the notification is less disruptive than an alert and does not block the user from his/her current task,
  • when a notification appears, the user has three possibilities:
    • tap on the notification and directly jump to the concerned task,
    • extend the notification to see more detail, perhaps in this case a summary of the update,
    • dismiss the notification by swiping it up.

With this solution, you get to let the user decide without obstructing his/her way. This allows for the acknowledgement of the new information (as described in your idea 1) without messing with the structure and positioning (as described in your idea 2).

  • Thank you. But what if message interrupted user when she was typing some text? Looks like I need to save draft in this case. I agree about banners and alerts, and this is how iOS manages notifications when my app is in background, but when it is in foreground, I need to display message myself somehow. There is no official way to do that, so people do something like github.com/avielg/AGPushNote .
    – user996142
    Aug 14, 2015 at 15:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.