I have meet a similar problem. After call popToRootViewControllerAnimated: , then call pushViewController: method which had set hidesBottomBarWhenPushed = YES, but the tabbar still shows.
I fixed it by rewrite popToRootViewControllerAnimated: method, and add thd following code:
(NSArrayUIViewController * *)popToRootViewControllerAnimated:(BOOL)animated {
NSInteger currentTab = (NSInteger)self.tabBarController.selectedIndex;
self.tabBarController.selectedIndex = labs(currentTab - 1);
self.tabBarController.selectedIndex = currentTab;
return [super popToRootViewControllerAnimated:animated];
}