I just ran into this, a couple of days ago. We had a usability problem. Basically, the user could end up in a sequential-navigation “rabbithole.” It would be an unlikely scenario, but there was nothing preventing it.
I proposed a solution that I have seen before, where a second “all the way back” button appears, after a prescribed number of stack pushes. This would unwind the entire stack, instead of just jumping back one.
A “kludgy” solution, but one that I actually implemented and demonstrated in about 15 minutes. It was safe, obvious, and bug-free. Probably, 90% of our users would never see this second back button, and, if they did, its function is completely obvious.
Instead, the team leader wanted to hack the Tab Bar, so that the selected item would enable, after the stack started, and would do the same thing as the “all the way back” button. This was actually a more elegant solution.
This would have required messing with the tab bar, or replacing it with a toolbar. Since the app had been designed from the start as a tab bar app, the second option would have required a complete rewrite of the app structure, and the first option could risk strange bugs, and, almost certainly, issues with future screen configurations and operating system updates. I’ve hacked the tab bar before, and regretted it.
I made every effort to give them what they wanted, but there was really no way to do it, without that rewrite. Since the app is at about the 70% complete stage, this would be a disaster.
I put my foot down, and insisted on my kludgy solution, while making the toolbar implementation a “2.0” feature. I really don’t like to throw my weight around, like that. I think it damages team cohesiveness, and intimidates creative discussion, but it needed to be done.