Created
May 25, 2011 05:00
-
-
Save chrishulbert/990371 to your computer and use it in GitHub Desktop.
Finding the currently visible view in a UITabBarController
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { | |
// Firstly, we want to figure out who is the currently visible view controller. | |
// There are 4 possibilities here: | |
// 1- They could be a non-nav controller, with a visible tab (ie not under the 'more' tab) | |
// Simple: self.selectedViewController | |
// 2- They could be a nav controller, with a visible tab (ie not under the 'more' tab) | |
// Get it's visible view: self.selectedViewController.visibleViewController | |
// 3- They could be a non-nav controller, under the 'more' tab | |
// Simple: self.selectedViewController | |
// 4- They could be a nav controller, under the 'more' tab | |
// This is where it gets tricky (or buggy, really? You decide.) | |
// What UIKit does is: its sets the self.selectedViewController to your nav controller, but steals the root view and | |
// pushes it onto the self.moreNavigationController's stack | |
// So if your self.selectedViewController.viewControllers is empty, use self.moreNavigationController.visibleViewController | |
UIViewController *visible = self.selectedViewController; // For non-nav controllers | |
if ([visible respondsToSelector:@selector(visibleViewController)]) // For nav controllers | |
visible = [((UINavigationController*)visible) visibleViewController]; | |
if (!visible) // Exception for nav controllers under the more tab | |
visible = self.moreNavigationController.visibleViewController; | |
return [visible shouldAutorotateToInterfaceOrientation:interfaceOrientation]; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks, and you're 100% correct - I want to lose that More tab so badly, you have no idea.