将 2 个 ViewController 组合在 TabBarView 的单个选项卡中,并允许在同一选项卡内来回切换

Posted

技术标签:

【中文标题】将 2 个 ViewController 组合在 TabBarView 的单个选项卡中,并允许在同一选项卡内来回切换【英文标题】:Combine 2 ViewControllers in a single tab of TabBarView and allow back and forth switching within the same tab 【发布时间】:2016-12-23 09:29:53 【问题描述】:

所以我想在 Xcode 中做这样的事情(使用 Swift):

应该有一个 TabBar VC,在单个选项卡下包含 2 个 VC。但是当打开其中一个选项卡时,它应该显示第二个 VC 图标,并允许我使用同一个按钮在 2 个 VC 之间来回切换。

就像,当您点击“List”时,它会显示 List ViewController,然后“List”选项卡会变为“Map”,反之亦然。

编辑:合并了Chan的解释。

【问题讨论】:

您说的是滑出式控制器吗?看看这个github.com/KyleGoddard/KGFloatingDrawer 我假设您的意思是当您点击“List”时,它会显示 List ViewController,然后“List”选项卡会变为“Map”,反之亦然。但这似乎不是一个好的设计,并且与标签栏应该做的事情适得其反。有什么理由不能让它们成为两个单独的标签吗? @AMAN77 不是真的。 那么你可能只需要一个 splitViewcontroller @Saad 我有你的问题。我已经在下面的答案中为您提供了解决方案。如果您想以这种方式进行操作,我可以进一步解释。 【参考方案1】:

您可以使用以下步骤来做到这一点:

    ContainerView 用作您的Tabbar 的第一个选项卡(可能是ThirdVC)。

    子类你的UITabBarController

    管理一个 Global 变量,用于当前在应用程序委托或您的 gloal 类中显示的 VC。

    在此处执行检查和更新任务(在标签栏控制器的子类中)

    //Here you can write your logic to update the view controller for first tab. Get reference of FirstVC here or create a delegate from where you can update your first Tab.

    override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) var selectedIndex = self.selectedIndex if selectedIndex == 0 if currentVC == First else

【讨论】:

为什么UITabBarController 需要成为ContainerView 的子类?这不会产生多个 TabBarControllers 吗?为什么不将内部 2 活动设为 ContainerView 的子类并将其链接到 UITabBarController No.. 你必须继承 'UITabBarController' 来识别标签栏的索引选择。创建 ThirdVC 作为您的第一个选项卡的第一个控制器并将 ContainerView 添加到您的 ThirstVC 并在该容器视图中您将在两个即 FirstVC 和 SecondVC 之间切换。在同一个 Tabbarcontroller 上,您将能够更改 Tab 图标。

以上是关于将 2 个 ViewController 组合在 TabBarView 的单个选项卡中,并允许在同一选项卡内来回切换的主要内容,如果未能解决你的问题,请参考以下文章

1 个 ViewController 和 2 个 modalViews 委托

将数组发送到下一个viewcontroller iOs xcode [重复]

尝试在 2 个控制器之间传递数据时,我收到错误无法分配类型“ViewController.Item?”的值键入“项目?”,

在不同的 ViewController 之间将数据传递给数组

iOS - 在 ViewController 之间共享数据

在 2 个 ViewController 之间推送 - NavigationBar