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

Single tab bar item present different view controllers depending on a condition?

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

有什么方法可以告诉标签栏控制器根据条件呈现不同的视图控制器吗?

最简单的选择是使用一个 CartViewController,其视图有两个子视图,一个 table 视图 (A) 包含购物车项目,另一个视图 (B) 包含 'cart is empty' 消息。

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

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

您实际上可以呈现相同的 UITableViewController。 在那个 UITableViewController 你必须知道你是否有数据。如果您有 UITableViewController 的数据,那么您将在 UITableViewController 中显示购物车中的项目,否则您可以在相同的 UITableViewController 中显示空消息。 您可以参考此 post 在 `UITableViewController? 上显示空消息?

.