从UITabBarController呈现模态

时间:2014-08-02 22:06:28

标签: ios xcode cocoa-touch uitabbarcontroller uistoryboard

与Instagram和其他流行的应用程序类似,我希望我的UITabBarController中的一个按钮将其视图控制器显示为全屏模式而不是普通标签。我已经使用Storyboards将UITabBarController连接到它的所有子视图控制器,我无法弄清楚如何将一个视图控制器呈现为模态。我在这里发现了一些其他问题,询问同样的事情,但他们似乎是手动组装标签栏而不是像我一样使用segue。这甚至可能就像我做的那样吗?

2 个答案:

答案 0 :(得分:10)

tldr - 请查看以下代码。

我从axxixc的方法开始,但遇到了一些问题。我试图通过实施tabBarController:shouldSelectViewController:的{​​{1}}来模态地显示视图。但是,iOS抱怨视图已经在视图层次结构中,一旦你想到它就很明显,因为在IB中使用UITabBarController的全部意义在于iOS处理实例化这些视图。接下来,我从它的父母那里删除了视图,并且停止了错误,但这种方法仍然感觉错误和脆弱。它也没有让我能够控制每次模型弹出时是否要重新实例化视图,在我的情况下我做了。

所以我最终做的是,在IB中,将该特定选项卡连接到一个有效充当占位符的空视图控制器。我重写相同的UITabBarControllerDelegate方法并检查视图控制器的标题。如果它与我在IB中设置的虚拟标题相匹配,则在模态显示我自己的视图后,通过返回tabBarController:shouldSelectViewController:来停止标签栏控制器显示虚拟控制器。

以下是代码:

false

答案 1 :(得分:0)

我非常怀疑Instagram正在使用一个完全自定义的标签栏,但是如果你想使用标准的UIKit这样做,我会说一个好看的地方将是子类UITabBarController并覆盖一些其UITabBarDelegate方法,特别是-[UITabBarDelegate tabBar:didSelectItem:]