在UITabbar上面使用UIToolbar - 这可能吗?

时间:2012-10-19 14:51:00

标签: ios uitabbar uitoolbar

我的问题类似于one,但在那里没有完全回答。

我想要做的是将位于个人UIToolbars底部的不同UITableViews的现有基于导航的应用转换为具有UITabbar界面的应用。其中一个选项卡应显示与现有应用程序(显示某种分层数据)相同的UITableView数据层次,而其他选项卡将分配其他内容(例如:设置,帮助,...),这些都是无关紧要的这里。这个想法是允许用户从导航堆栈的任何阶段快速切换到“帮助” - 屏幕 - 然后返回。

例如,使用3个标签:

 1. Database root (UIToolbar) - folder 1 (UIToolbar) - file 1.1
                                                     - file 1.2
                              - folder 2 (UIToolbar) - file 2.1
                                                     - file 2.2
 2. Help (no UIToolbar)
 3. Settings (no UIToolbar)

我从未在任何现有的应用程序中看到过这样的设计,尽管the question cited above表明实际上可以将旧的应用程序中的现有UIToolbars保留在标签栏之上。

这是

  • 技术上可行(没有问题,例如设备旋转)?
  • 接口指南允许

虽然示例代码会受到赞赏,但我主要想知道是否值得尝试构建这样的应用程序 - 或者首先是这样的设计是一个坏主意。

2 个答案:

答案 0 :(得分:0)

你可以在任何地方拥有UITabBar,你只是不会使用它的控制器。您必须编写自己的控制器并处理设备轮换期间发生的事情(或使用iOS 6的自动布局功能)。

答案 1 :(得分:0)

我尝试了,现在我可以回答我自己的问题了:

  • 如果您确保每个标签的视图都可以旋转,那么设备旋转就没有问题。
  • 虽然看起来有点不寻常,但我发现它非常实用。当然,它需要一些垂直空间。

至于实施,我发现它非常简单: 我所要做的就是使用Interface Builder插入UITabBarController代替我原来的主UIViewController,然后将后者移到前者的第一个标签中。然后在里面创建一些包含UIViewControllers的标签,并将其类重命名为其他现有UIViewControllers的类。最后,在相关的界面构建器检查器窗格中手动为所有这些控制器设置关联的NIB文件(因为它们现在不再由我的代码实例化)并更改一行代码以使UITabBarController成为{{1控制器。

结果:root显示在第一个标签的UIToolbar上方,但不显示在其他标签上。它的位置是固定的(滚动列表或类似物时),但它与标签栏和其他所有内容一起自动旋转。