iOS Disable popping to root view on pressing tab bar button

A possibility would be to create a subclass of UITabBarController and to implement the UITabBarControllerDelegate protocol. Then you could implement

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController

and return NO, when the particular viewController is selected again. A way to do this is is to save the recently selected item and to compare it with the currently selected one.