【问题标题】:add a view under tabbar in storyboard在故事板的标签栏下添加一个视图
【发布时间】:2014-06-01 02:56:32
【问题描述】:

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

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

我非常希望避免为我推入任一选项卡的每个控制器调整框架大小,因此我希望有一个我不知道的更简单的解决方案。

【问题讨论】:

  • 您可以在特定高度使用带有单独 UITabBar 的 UIViewController 并在下面创建栏。要更改每个选项卡的控制器,您可以使用子控制器。不太简单,但可行。

标签: ios objective-c storyboard uitabbarcontroller


【解决方案1】:

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

请注意,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];
}

【讨论】:

    猜你喜欢
    • 2013-04-28
    • 2012-10-12
    • 1970-01-01
    • 2016-01-11
    • 2013-02-03
    • 1970-01-01
    • 2019-01-08
    • 2017-10-05
    • 1970-01-01
    相关资源
    最近更新 更多