将嵌套在容器视图控制器中的UINavigationController添加到UITabBarController

时间:2014-04-28 11:48:09

标签: ios uitableview uiview uinavigationcontroller containment

我将UIViewController(红色)设置为UITabBarController的第一个标签,如下面的故事板所示。此视图控制器是一个容器视图控制器,并在其UINavigationController(红色视图控制器内的白色矩形)内加载contentView

Storyboard

这是我在红色视图控制器contentView内加载导航控制器的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    // instantiate navigation controller
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UINavigationController *navigationVC = [storyboard instantiateViewControllerWithIdentifier:@"N"];

    // place navigation controller inside content view
    [self addChildViewController:navigationVC];
    navigationVC.view.frame = self.containerView.bounds;
    [self.containerView addSubview:navigationVC.view];
    [navigationVC didMoveToParentViewController:self];
}

根据我对视图控制器包含的了解,这个应该工作,因为我明确地设置了导航控制器的框架。但是,当tableView中有足够的单元格超过容器的高度时,当我向下滚动时,tableView的末尾总会有一个条形。我已将tableView' s backgroundColor设置为橙色,将单元格backgroundColor设置为白色为了看到差异。

Gap at the end of the tableView

如何摆脱tableView

末尾的橙色差距?

(注意:我使用autolayout,我需要一个适用于iOS7 iOS6的解决方案。)

2 个答案:

答案 0 :(得分:4)

我知道您也在寻找适用于iOS 6的答案,但在iOS 7及以上版本中您可以使用

self.extendedLayoutIncludesOpaqueBars = YES;

答案 1 :(得分:0)

您是否尝试在self.edgesForExtendedLayout = UIRectEdgeAll;的{​​{1}}设置-(void)viewDidLoad

注意:仅限iOS 7