iOS7:避免UItableView或其他视图属于UITabBar

时间:2013-10-15 07:30:18

标签: uiview uiviewcontroller uinavigationcontroller uitabbarcontroller ios7

我的应用程序使用屏幕底部的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。

0 个答案:

没有答案