I'm working on an application that has a view hierarchy that is very similar to Apple's Music or iPod aps. It has a UITabBarController containing UINavigationControllers presenting UITableViews that eventually lead to a UIViewController that sets hidesBottomBarWhenPushed
to YES
in its designated initializer (to hide the UITabBar). The previous UITableViews all have a UISearchBar in their tableHeaderView
that I move out of sight in viewWillAppear:
.
The UISearch normally remains hidden until pulled down except when backing out of the UIView to a short UITableView. It remains hidden through the UITableView's viewWillAppear:
and viewDidAppear:
methods and the UIView's viewWillDisappear:
and viewDidDisappear:
methods and then finally pops down of its own accord. If I comment out self.hidesBottomBarWhenPushed = YES;
in the UIView the UISearchBar stays hidden when backing out of that view.
What is causing the UITableView to reveal the UISearchBar after I have hidden it? Is there a delegate method higher up in the view hierarchy that I can use to prevent it from happening?
Update I've created a simple project with the minimum amount of code needed to reproduce the problem. Download PushySearchBar.zip. (Sorry, I had a mod_rewrite rule preventing downloads from third-party domains. I've added Stack Overflow to the whitelist. Download should work now.)