如何在 1 项标签栏控制器中制作顶部标签栏以快速显示多个视图控制器?

Posted

技术标签:

【中文标题】如何在 1 项标签栏控制器中制作顶部标签栏以快速显示多个视图控制器?【英文标题】:How to make top tab bar inside 1 item tab bar controller to show multiple view controller in swift? 【发布时间】:2017-12-23 06:03:19 【问题描述】:

我有显示一些项目的标签栏控制器。 标签栏控制器中的一项具有多个视图控制器,由顶部标签栏显示。 我已经尝试使用分段控制和多容器视图来实现它,但它不能正常工作。

这是我要制作的故事板StoryboardExample

我希望右侧的三个视图控制器显示在项目选项卡栏中的视图控制器 2 中,并由顶部选项卡栏控制。 因此,它就像 Youtube 应用程序中的活动选项卡一样,顶部选项卡栏带有项目共享和通知。 Shared View in Youtube Application , Notification View in Youtube Application

编辑

这是从段控制改变视图的代码,

@objc func changeGroup(sender: UISegmentedControl)

    if sender.numberOfSegments == 3
    
        switch sender.selectedSegmentIndex
        
        case 0 :
            if self.groupView.isHidden == true
            
                self.groupView.isHidden = false
            
            if self.inspirationView.isHidden == false
            
                self.inspirationView.isHidden = true
            
            if self.pesantrenView.isHidden == false
            
                self.pesantrenView.isHidden = true
            

        case 1:
            if self.groupView.isHidden == false
            
                self.groupView.isHidden = true
            
            if self.inspirationView.isHidden == true
            
                self.inspirationView.isHidden = false
            
            if self.pesantrenView.isHidden == false
            
                self.pesantrenView.isHidden = true
            

        case 2:
            if self.groupView.isHidden == false
            
                self.groupView.isHidden = true
            
            if self.inspirationView.isHidden == false
            
                self.inspirationView.isHidden = true
            
            if self.pesantrenView.isHidden == true
            
                self.pesantrenView.isHidden = false
            

        default :
            break
        
    

【问题讨论】:

贴出你的一些代码,到目前为止你做了什么 我已经尝试过使用分段控制和多容器视图来制作它,但它不能正常工作。什么不适合你? @Tej Hai tej,这是我在那个item tab切换容器视图的方法 @PrashantTukadiya容器视图控制器中的tableview委托和数据源无法正常工作。有时数据显示,有时不显示。 【参考方案1】:

您想要的是自定义标签栏控制器。跟随这条线索,你就回家了:https://github.com/codepath/ios_guides/wiki/Creating-a-Custom-Tab-Bar

在这里你应该知道,他们使用 UIView 和按钮手动创建标签栏我在这里实现了一个带有原生标签栏的基本版本:https://github.com/zameerascentic/customTabBarNative

您应该注意(与该教程不同):

    标签栏位于底部,您可以随意移动 视图控制器单独创建并加载到 UIView 在标签栏项目选择委托上调用 ContainerView 检查标签栏标签,它将是 0,1 等,因为它将是 viewControllers 数组的索引 - 我们所有的视图控制器都是 加载到数组中以便于参考。 ViewController 被赋予 storyboardID 以供标签栏调用

【讨论】:

谢谢,有帮助

以上是关于如何在 1 项标签栏控制器中制作顶部标签栏以快速显示多个视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章

如何在标签栏控制器中隐藏一个标签?

无论选择哪个选项卡,都显示顶部栏

如何使用标签栏以全屏模式打开 UIView?

Ios Swift:在自定义标签栏中显示导航栏

我们如何创建一个更大的中心 UITabBar 项

如何快速在自定义导航栏顶部制作一半的 ImageView