2012-11-13 21 views
1

我有一个小应用程序,显示dvds列表,然后您可以从表格视图中钻取并获取一些细节。它的底部还有一个标签栏,您可以将标签按钮从dvd转换为蓝光。这一切工作正常。ios:storyboard + tabbar +更多按钮(设计)

在阅读关于标签栏应用程序时,我看到一个演示,一旦你添加了超过5个标签栏按钮,“more”就会显示出来,然后你可以像苹果音乐应用程序一样拖放按钮,很酷!我还注意到,每个标签栏按钮都控制着一个单独的导航控制器,这对我来说是一种新技术。

当我创建我的应用程序时,它有一个导航控制器,我添加了一个视图控制器,视图的顶部是一个表视图,视图的底部是一个标签栏。然后将按钮拖到按钮栏上,可以添加5个以上的按钮,并且“more”不显示。

所以,我想,它需要成为一个不同的导航控制器设计。

我很困惑,如果我可以把我的应用程序和嵌入选项卡视图控制器,或者如果我可以适应我有或没有。

现在,由于所有选项卡基本相同(可深入到详细视图的表格),我只是在切换选项卡时重新加载来自不同文件的数据。很好,很干净。

如果我切换到选项卡视图控制器的概念,创建5个导航控制器与5个表视图,深入到5个细节视图,似乎是浪费。另外如果我想要7呢?或9? (我确实意识到(或猜测)我可以给每个5个视图提供相同的类名,但UI仍有很多故事板...)

这是一个设计问题,以更好地理解我的选项。

+0

这听起来像你刚刚添加一个tabBar到你的导航控制器 - 这不是一个TabBarController同样的事情,所以这就是为什么你没有得到“更多”按钮。 – rdelmar

回答

0

选项卡栏控制器必须始终是应用程序的根控制器。 (除非它是在分割视图中,在这种情况下,分割的不同侧可以是标签栏控制器 - 但它仍然必须是根。)

因此,您的应用程序的正确设计是:标签栏控制器作为根,每个选项卡包含一个导航控制器,每个导航控制器都将您的表视图控制器作为第一个视图控制器。这可能看起来很浪费,但如果你仔细想想,每个选项卡都需要有自己的控制器堆栈,所以没有其他合理的方法来实现它。如果选项卡1上的用户在导航堆栈中的深度为2,但选项卡2的深度为7,则不需要在选项卡之间切换并丢失您的位置。

+0

谢谢,有趣的一点。在表格视图下拉菜单中,我搜索到另一个tableview或detailview,而那些没有标签栏,因为我担心如何做到这一点。很高兴知道这是标签栏控制器的一个很好的理由。 – user589310