2016-08-13 75 views
1

我想有三个VC(A,B,C看图片)。我希望每个VC都有三个相同的按钮。当用户按下左键时,它将显示一个VC,当按下中央按钮时 - “B”VC将显示,并与最后一个相同。另外我不需要视图控制器来创建每个按钮的按下,他们必须保存它们的状态。复制UITabBarController逻辑与默认按钮

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

有人可以帮我解决我的问题,或者显示正确的方法来实现这个目标吗?

picture

+0

只需创建3点不同的意见,然后显示视图与按钮相关的和隐藏其他视图 –

+1

你想在代码或故事板中执行此操作? –

+0

@DharmeshKheni如果其中一个视图必须被捕获摄像头输出?它会按需要工作而不会出现一些问题?而在另一个视图上,我需要导航和状态栏? – mikle94

回答

1

可以按如下方式实现它:

  1. 添加在父控制器的底部的三个按钮。
  2. 添加三个容器视图,并使其各自的单独的类,以便您的代码是模块化的。确保所有容器的高度和宽度相同,并覆盖完整的视图,并将按钮留在底部。 (容器视图使用故事板很容易管理)
  3. 现在为所有三个容器视图制作三个插座,并为所有三个按钮分别制作三个操作。
  4. 开启按钮隐藏您不想显示的两个容器视图,并取消隐藏您想要看到的视图。

有了这个,你可以得到Tab Bar Controller的功能。 PS:你不应该使用这种方法,而应该在需要的地方使用标签栏控制器。

+0

关于您的评论,如果我从我的客户那里得到了这三个按钮看起来不像默认UITabBar的设计,该怎么办?我还应该做什么? – mikle94

+0

您是客户聘请的iOS专家,因此您应该告诉客户推荐的方法和应用程序的良好体系结构。你试图实现的是一种解决方法,但不是iOS架构。你应该告诉你的客户苹果推荐的方式,并向他展示苹果使用标签栏开发的应用程序的例子。 – Harsh

2

试试这个办法:

  1. 在主视图中,添加三个重叠的容器的观点。
  2. 将按钮添加到主视图以在视图之间切换(通过将它们放在前面)。
  3. 不管你想要配置viewControllers。如果需要,将它们嵌入NavigationController
  4. @IBOutlets添加到容器视图。
  5. @IBAction每个按钮,把相应的视图来front`

simulated tab view

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) 
    } 
}