Skip to content

Instantly share code, notes, and snippets.

@chrishulbert
Created May 25, 2011 05:00
Show Gist options
  • Save chrishulbert/990371 to your computer and use it in GitHub Desktop.
Save chrishulbert/990371 to your computer and use it in GitHub Desktop.
Finding the currently visible view in a UITabBarController
- (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];
}
@chrishulbert
Copy link
Author

chrishulbert commented May 10, 2012 via email

@jdandrea
Copy link

Thanks, and you're 100% correct - I want to lose that More tab so badly, you have no idea.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment