My App works with an UITabBarController on the bottom of the screen that controls 4 different Navigation Controller, each one of the four navigation controllers manages a different UITableViewController:
-(BOOL) application: (UIApplication*) application didFinishLaunchingWithOptions: (NSDictionary*) launchOptions
{
UITableViewController *TVC1 = [UITableViewController alloc] init];
UINavigationController *NC1 = [UINavigationController alloc] initWithRootViewController: TVC1];
NC1.navigationBar.barStyle = UIBarStyleDefault;
NC1.navigationBar.translucent = NO;
UITableViewController *TVC2 = [UITableViewController alloc] init];
UINavigationController *NC2 = [UINavigationController alloc] initWithRootViewController: TVC2];
NC2.navigationBar.barStyle = UIBarStyleDefault;
NC2.navigationBar.translucent = NO;
UITableViewController *TVC3 = [UITableViewController alloc] init];
UINavigationController *NC3 = [UINavigationController alloc] initWithRootViewController: TVC3];
NC3.navigationBar.barStyle = UIBarStyleDefault;
NC3.navigationBar.translucent = NO;
UITableViewController *TVC4 = [UITableViewController alloc] init];
UINavigationController *NC4 = [UINavigationController alloc] initWithRootViewController: TVC4];
NC4.navigationBar.barStyle = UIBarStyleDefault;
NC4.navigationBar.translucent = NO;
UITabBarController *tabBarController = [UITabBarController alloc] init];
NSArray *viewControllers = @[NC1, NC2,NC3,NC4];
tabBarController.viewControllers = viewControllers
[tabBarController.ViewControllers objectAtIndex:0] setTitle: @"1"];
[tabBarController.ViewControllers objectAtIndex:1] setTitle: @"2"];
[tabBarController.ViewControllers objectAtIndex:2] setTitle: @"3"];
[tabBarController.ViewControllers objectAtIndex:3] setTitle: @"4"];
self.window.rootViewController = tabBarController;
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
The problem with iOS7 is that my tableViews were falling under:
1) The UINavigationController/UINavigationUItem on the top of the screen. 2) The UITabBar on the bottom of the screen.
I solved the problem #1 setting for each one of the UINavigationControllers the navigationBar.translucent property to NO:
NC1.navigationBar.translucent = NO;
NC2.navigationBar.translucent = NO;
NC3.navigationBar.translucent = NO;
NC4.navigationBar.translucent = NO;
I don't know how to solve the problem #2.
I didn't notice it until I had a table with more than 15 rows and the UITableView was expected to scroll down to the bottom one when it appers. The bottom one is UNDER the UITabBar.
I have the same problem on more complex UIViewController (inside the UINavigationController) built like this:
CustomTableHeader (UIView) UITableView CustomTableFooter (UIView)
All the constraints are perfect but on some of the views I found the CustomTableFooter falls under the UITabBarController and I have to increase its height to keep it visible. This is weird 'cause the code that builds the UIVIewController is exactly the same but sometimes the bottomView falls under the UITabBarController, other times NO.