【问题标题】:UITabBarController only showing half of its UITabBar (off screen)UITabBarController 仅显示其 UITabBar 的一半(屏幕外)
【发布时间】:2011-06-18 21:40:24
【问题描述】:

从 UIViewController 呈现 UITabBarController 后,我的 UITabBar 没有完全显示。请问你能告诉我我做错了什么吗?

我的代码是:

//some method

LoggedInViewController *lvc = [[[LoggedInViewController alloc] initWithAccount:account] autorelease];
[self presentModalViewController:lvc animated:YES];

- (void)viewDidLoad

{
    self.tabController = [[UITabBarController alloc] init];
    LoggedInFeedNavigationController *navController = [[LoggedInFeedNavigationController alloc] initWithAccount:self.account];
    [self.tabController setViewControllers:[NSArray arrayWithObject:navController]];
    [self.view addSubview:self.tabController.view];
    [super viewDidLoad];
}

【问题讨论】:

  • 栏的哪个部分没有显示?是不是整个视图都移出了屏幕?
  • @Nicholas S 是的,没错。
  • "在部署标签栏界面时,您必须将此视图安装为窗口的根。与其他视图控制器不同,标签栏界面永远不应安装为另一个视图控制器的子级。"来源developer.apple.com/library/ios/#documentation/UIKit/Reference/…
  • 我的意思是在里面有一个 UINavigationController 和一个 UITabBarController,而不是我怎么做(反过来)?
  • @Howey-Ya-Doing 不,一般的做法是拥有标签栏控制器并将导航控制器设置为它的栏控制器。

标签: iphone objective-c uitabbarcontroller uitabbar


【解决方案1】:

这不是一个好习惯:

[viewController1.view addSubview:viewController2.view];

失去了 MVC 设计的重点。视图控制器应该(从模型中)获取您的数据并将其放入视图中。如果您有多个视图,只需安排视图的功能以接受相应的数据。

因此,如果您需要一个标签栏控制器,您应该执行以下操作:

// assuming you are in the same initial controller
UITabBarController* pTabBarControllerL = [[UITabBarController alloc] init];
MyFirstController* pFirstControllerL = [[MyFirstController alloc] init];
[pTabBarControllerL setViewControllers:[NSArray arrayWithObject:pFirstControllerL]];
// perhaps set more tab bar controller properties - button images and so on
[self presentModalViewController:pTabBarControllerL animated:YES];
// release the memory you do not need

-(void)viewDidLoad {
    // do your work in pFirstControllerL
}

PS:你不应该继承 UINavigationController 和 UITabBarController。

【讨论】:

    【解决方案2】:

    其实根据苹果的建议,UITabBarViewController 应该是 UIWindow 层次结构中的根。我们很难将 TabBar VC 或 Navigation VC 放到根目录下。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多