将 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?”的值键入“项目?”,