在故事板中的tabbar下添加一个视图

时间:2014-04-17 01:16:46

标签: ios objective-c storyboard uitabbarcontroller

我想知道是否有一种方法(最好是一个简单的方法)在标签栏下添加一个视图,如附图所示,这样当我在标签之间切换和按下新的视图控制器时它就会停留在那里/弹出每个标签。

我将UITabBarController子类化为“MainTabController”,并将其设置为我的故事板中主标签栏控制器场景的自定义类。然后在MainTabController的viewDidLoad中,我移动tabBar并添加红色子视图。到目前为止这么好,但主视图区域大小仍然像以前一样,底部有标签栏,所以现在表格的最后几个元素保持在标签栏下方。

我非常希望避免调整每个控制器的帧大小,我将其推入任一选项卡中,所以我希望有一个我不知道的更简单的解决方案。

what it should look like

1 个答案:

答案 0 :(得分:3)

您可以通过将标签栏控制器嵌入自定义容器控制器中来完成此操作。您可以通过将UIViewController设置为初始视图控制器并向其添加容器视图来在故事板中执行此操作。调整容器视图的大小,使其在下方具有您需要的任何空间,并在该空间中添加视图。删除自动嵌入容器视图中的视图控制器,并控制从容器视图拖动到选项卡栏控制器,然后选择"嵌入"。

enter image description here

请注意标签栏控制器在iOS 7中布局视图的方式存在错误。如果您将视图放在其中一个控制器的底部附近,它会在您第一次看到它时显示,但是当您选择另一个选项卡然后再次返回时,在标签栏下向下移动(如果您旋转到横向然后再返回,它将重新出现)。您可以通过使容器视图控制器(我的故事板中的初始控制器)成为选项卡栏控制器的委托并添加此代码来解决此错误。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // called by the embed segue
    UITabBarController *tbc = segue.destinationViewController;
    tbc.delegate = self;
}


-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    [tabBarController.view setNeedsLayout];
}