如何将自定义视图与 TabBar 集成?

Posted

技术标签:

【中文标题】如何将自定义视图与 TabBar 集成?【英文标题】:How to integrate custom view with TabBar? 【发布时间】:2014-08-12 14:14:28 【问题描述】:

我希望任何地方都有一些教程,或者任何 O'Reily Cookbooks 都会解释这一点,但每个人都只谈论过使用 UITabBarController。

然而,我在我的应用程序中需要的是一个自定义视图(基本 UIViewController),其中包含一个 NavigationBar(仅用于标题栏和一个“完成”按钮)和一个 TabBar。

问题是:如何集成 TabBar 并将视图连接到每个栏按钮(并添加更多栏按钮)?这只能以编程方式完成还是可以在 Storyboard 中完成?哪个类需要是 TabBarDelegate(我想我的自定义 UIViewController)?

有没有人知道这方面的好指南或给我一些提示?

谢谢。


更新

我决定简单地在 TabBarDelegate 中检查 tabBar.selectedItem.tag 并相应地从情节提要中实例化一个子视图,并将其添加到夹在我的导航栏和底部标签栏之间的 ContainerView 中。到目前为止这有效(尽管我不确定是否没有更好的方法)但现在我面临一个不同的问题:

当一个子视图加载到 ContainerView 中时,整个标签栏就会消失。有人知道为什么会这样吗?

【问题讨论】:

检查标签栏是否为零。检查标签栏超级视图是否为零。 检查。他们都不是零。我怀疑它与自动布局有关。我为此问题创建了一张新票:***.com/questions/25281013/… 【参考方案1】:

使用 Storyboard 创建 Tab Bar Controller 应用程序非常容易。 Apple 甚至提供了一个 sn-p :) 创建新项目时,只需选择 ios -> 应用程序 -> 选项卡式应用程序。

另外,这里有一个很好的教程:https://www.youtube.com/watch?v=RhsHtd6rAiQ。

【讨论】:

呃,你看我上面的描述了吗?选项卡式应用程序模板使用现成的 TabBarController。但这不是我需要的。 那么Tab Bar就没有问题了吗?然后您应该将您的问题命名为“如何将导航栏添加到视图控制器”。 这里的区别在于 TabBar(在我的情况下放在 UIViewController 中)和 TabBarController 之间。这两个是不同的组件。 那么答案是,这可以通过编程方式完成,是的。无法讲述有关故事板的任何内容。 嘿@kelin 我同时将它与代码集成。你知道为什么标签栏会消失吗(见上面的更新说明)?【参考方案2】:

通过在其中创建一个带有 UIViewController 的 Xib 并放置一个 UITabBar 和一个 UIView 作为子视图的容器,我自己解决了原始问题。然后使用 NSBundle.mainBundle().loadNibNamed() 加载 xib 并为应该加载的子视图创建 Xib 并使用 loadNibNamed() 加载它们并使用 viewContainer.addSubview() 添加它们。

【讨论】:

以上是关于如何将自定义视图与 TabBar 集成?的主要内容,如果未能解决你的问题,请参考以下文章

ios开发 如何修改正确tabBar的高度?

如何将自定义视图动画化为自定义视图

如何将自定义视图拖动为 Xcode 6 中自定义视图的私有属性

如何将自定义视图添加到 iOS VoiceOver 转子?

如何将自定义视图添加到布局?

如何将自定义彩色图像添加到 TabBarController 中的 tabBar?