单个标签栏项目根据条件呈现不同的视图控制器?

Posted

技术标签:

【中文标题】单个标签栏项目根据条件呈现不同的视图控制器?【英文标题】:Single tab bar item present different view controllers depending on a condition? 【发布时间】:2016-12-21 22:30:15 【问题描述】:

我正在使用标签栏控制器制作一个具有几个不同标签的应用程序。我在第一个选项卡中将项目添加到包中,并在下一个视图控制器中更新购物车。如果用户在没有添加任何内容的情况下转到第二个选项卡(购物车),我希望它显示一个视图控制器,说购物车是空的。如果他们在添加了某些内容后转到它,那么它将显示一个表格视图。

有没有办法告诉标签栏控制器根据条件呈现不同的视图控制器?

【问题讨论】:

【参考方案1】:

最简单的选择是使用CartViewController,其视图有两个子视图,一个包含购物车项目的表格视图 (A) 和另一个包含“购物车为空”消息的视图 (B)。

覆盖其viewWillAppear 函数,并根据购物车显示视图 A 并隐藏视图 B,反之亦然。

可以通过viewControllers 属性修改UITabBarController 的子视图控制器。但是,通过对购物车中的更改做出反应来做到这一点很复杂,而且不值得麻烦,恕我直言。

【讨论】:

谢谢这就是我最终做的,我认为这也是最简单的解决方案。【参考方案2】:

您实际上可以呈现相同的UITableViewController。 在那个UITableViewController 你一定知道你是否有数据。如果您有UITableViewController 的数据,那么您将在UITableViewController 中显示购物车中的商品,否则您可以在同一UITableViewController 中显示空消息。 您可以参考这篇文章在 `UITableViewController? 上显示空消息?

If no Table View results, display "No Results" on screen.

【讨论】:

以上是关于单个标签栏项目根据条件呈现不同的视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章

显示性能问题的标签栏

呈现一个导航栏和一个非根视图标签栏控制器

无法在标签栏控制器的顶部完全呈现模态视图控制器

切换标签栏项目时,UINavigationController 如何将其整个视图控制器表示层次结构保存在内存中?

如何允许标签栏项具有多个视图控制器

如何在我的标签栏 iOS 应用程序上呈现模式 UINavigation 视图?