我的应用程序使用屏幕底部的UITabBarController控制4个不同的导航控制器,四个导航控制器中的每一个管理不同的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;
}
iOS7的问题在于我的tableViews属于:
1)屏幕顶部的UINavigationController / UINavigationUItem。 2)屏幕底部的UITabBar。
我解决了每个UINavigationControllers的问题#1设置navigationBar.translucent属性为NO:
NC1.navigationBar.translucent = NO;
NC2.navigationBar.translucent = NO;
NC3.navigationBar.translucent = NO;
NC4.navigationBar.translucent = NO;
我不知道如何解决问题#2。
我没有注意到它,直到我有一个超过15行的表,并且当它出现时,UITableView应该向下滚动到底部。最底层的是UITabBar。
我在更复杂的UIViewController(在UINavigationController内部)中遇到了同样的问题:
CustomTableHeader(UIView) UITableView的 CustomTableFooter(UIView)
所有约束都是完美的,但在某些视图中,我发现CustomTableFooter属于UITabBarController,我必须增加它的高度才能使其可见。这很奇怪,因为构建UIVIewController的代码完全相同,但有时底部视图属于UITabBarController,其他时间为NO。