我的应用程序与屏幕底部的 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 的代码完全相同,但有时 bottomView 位于 UITabBarController 之下,有时则否。