在容器视图中使用MultipleView控制器

时间:2018-08-28 11:58:51

标签: ios uiviewcontroller uicontainerview

我正在构建一个iOS应用程序,它具有许多不同的视图并且也很困难。

我有一个标签栏,其中包含4个页面

  1. 帐户
  2. 主页
  3. 钱包
  4. 我的列表

当用户点击列表(第4个数字选项)时,我的应用程序需要显示带有分段控件的标题(或尚未确定控件的任何顶部栏),我想在此处移动Multiple ViewController。假设顶部栏有5个按钮,如下

  1. 首页列表
  2. 相对列表
  3. 朋友列表
  4. 办公室列表
  5. 客户列表

对于这些不同的列表,我制作了不同的View控制器。我要在“我的列表”中移动的列表(它是主视图控制器,将作为主视图控制器处理,并将包含上述5个按钮)在此主视图控制器中,当我单击“主页”列表或“朋友列表”按钮时,它将移动相关顶部栏下方的View Controller(按钮列表)

有关更多说明,请参见下图。请让我知道我该怎么做。 。如何使子级View控制器占用特定区域。

See this picture for question

2 个答案:

答案 0 :(得分:0)

好吧,我认为您在使用IB或以编程方式使用Container视图时有些困惑。在IB中使用时,必须简单地为其创建一个相关类。就像您通过从对象库中拖动来创建View Controller并将其与可口可乐UIViewController类相关联。

我建议您观看this教程。其安静简单易懂。 但是您的问题的答案是:

按照您所说的,在顶部栏的下方获取一个UIView。您可以根据需要将其设置为全宽和全高。然后创建其出让。就像下面一样,将其用作

@IBOutlet var viewMain: UIView!

并以此移动您的子视图控制器

viewMain.addSubview(childViewController)

您完成了

答案 1 :(得分:0)

如果SegmentControl视图具有相同的设计,则每个视图都不需要单独的ViewController。 如果每个列表的UI完全不同,那么有很多方法可以做到这一点。

1-使用滚动视图,其内容宽度将为Screenwidth *视图数。 只需在scrollView中添加所有视图即可。

例如,您想要添加到两个视图中,这是代码

    self.scrollView.contentSize = CGSize(width: UIScreen.main.bounds.size.width * 2, height: self.scrollView.frame.height)
    let vc1 = your view controller
    vc1.view.frame =  CGRect(x: 0, y: 1, width: scrollView.frame.size.width , height: scrollView.frame.size.height)

    let vc2 = your second viewcontroller
    vc2.view.frame =  CGRect(x: UIScreen.main.bounds.size.width, y: 1, width: scrollView.frame.size.width  , height: scrollView.frame.size.height)


    scrollView.addSubview(vc2.view)
    scrollView.addSubview(vc1.view)

现在,如果您想更改可见视图

scrollView.scrollRectToVisible(CGRect(x: UIScreen.main.bounds.size.width * CGFloat(//Position of your view 1 or 2), y: 0.0, width: UIScreen.main.bounds.size.width, height: scrollView.frame.size.height), animated: true)

2-使用容器

3-也有非常好的开源库(pod),其中之一就是CarbonKit https://github.com/ermalkaleci/CarbonKit