Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用默认按钮复制UITabBarController逻辑_Ios_Swift_Uitabbarcontroller - Fatal编程技术网

Ios 使用默认按钮复制UITabBarController逻辑

Ios 使用默认按钮复制UITabBarController逻辑,ios,swift,uitabbarcontroller,Ios,Swift,Uitabbarcontroller,我想要三个VC(A,B,C看图片)。我希望每个VC都有三个相同的按钮。当用户按下左键时,它将显示一个VC,当按下中央按钮时,将显示“B”VC,与上一个相同。此外,我不需要每次按下按钮都创建视图控制器,它们必须保存状态 同样的功能有UITabBarController,但我不知道如何用按钮实现它 有人能帮我解决这个问题吗?或者能告诉我实现这个目标的正确方法吗 您可以通过以下方式实现: 在父控制器底部添加三个按钮 添加三个容器视图,并分别创建它们各自的独立类,以便代码是模块化的。确保所有容器的高度和

我想要三个VC(A,B,C看图片)。我希望每个VC都有三个相同的按钮。当用户按下左键时,它将显示一个VC,当按下中央按钮时,将显示“B”VC,与上一个相同。此外,我不需要每次按下按钮都创建视图控制器,它们必须保存状态

同样的功能有UITabBarController,但我不知道如何用按钮实现它

有人能帮我解决这个问题吗?或者能告诉我实现这个目标的正确方法吗


您可以通过以下方式实现:

  • 在父控制器底部添加三个按钮
  • 添加三个容器视图,并分别创建它们各自的独立类,以便代码是模块化的。确保所有容器的高度和宽度相同,并且它覆盖了整个视图,将按钮留在底部。(容器视图非常容易使用故事板进行管理)
  • 现在为所有三个容器视图创建三个出口,并为所有相应的三个按钮创建三个操作
  • 在按钮上,按“隐藏两个您不想显示的容器视图”并取消隐藏您想查看的容器视图 有了它,您可以获得类似于选项卡栏控制器的功能

    PS:您不应该使用这种方法,在需要的地方应该使用选项卡栏控制器

    试试这种方法:

  • 在主视图中,添加三个重叠的容器视图
  • 将按钮添加到主视图以在视图之间切换(通过将其置于前面)
  • 根据需要配置ViewController。如果需要,将它们嵌入到
    导航控制器中
  • @IBOutlets
    添加到容器视图中
  • 在每个按钮的
    @iAction
    中,将相应的视图置于前面`

  • 只需创建3个不同的视图,然后显示与按钮相关的视图并隐藏其他视图。是否要在代码或情节提要中执行此操作?@DharmeshKheni如果其中一个视图必须是capturedCameraOutput怎么办?它能按需要工作而不出现故障吗?在另一个视图中,我需要导航栏和状态栏?@HaydenHolligan我会选择任何变体。它只需要工作是的,它应该工作试试。@Mikle94关于你的评论,如果我从我的客户那里得到的设计,其中这三个按钮看起来不像默认的UITabBar,该怎么办?我还应该做什么?你是客户雇佣的iOS专家,所以你应该告诉客户推荐的方法和良好的应用程序架构。您试图实现的是一个变通方案,但不是好的iOS体系结构。你应该告诉你的客户苹果推荐的方式,并向他展示苹果使用标签栏开发的应用程序的例子。
    class ViewController: UIViewController {
    
        @IBOutlet weak var containerA: UIView!
        @IBOutlet weak var containerB: UIView!
        @IBOutlet weak var containerC: UIView!
    
        @IBAction func pressA(sender: UIButton) {
            view.bringSubviewToFront(containerA)
        }
    
        @IBAction func pressB(sender: UIButton) {
            view.bringSubviewToFront(containerB)
        }
    
        @IBAction func pressC(sender: UIButton) {
            view.bringSubviewToFront(containerC)
        }
    }