3

我想实现我自己的容器视图控制器。请想象这是我的ipad

在此处输入图像描述

一种通常的拆分视图控制器,但我想扩展它:视图“a”的宽度应该可以调整大小,当我点击视图“B”时 - 视图“C”进入可见区域

在此处输入图像描述

例如,在我的故事板中,我有 3 个容器视图:AViewController(用于 A 视图)、BViewController、CViewController 和一个组合视图控制器(初始视图控制器)。在组合视图控制器中,我将从容器视图中实现嵌入 segue,并通过以下代码初始化容器视图之间的关系:

@property ... *aViewController,*bViewController,*cViewController;
    - (void)prepareForSegue:(UIStoryboardSegue *)segue
    sender:(id)sender
    {
    if ([segue.identifier isEqualToString:@"EmbedAViewController"])
    {
    self.aViewController =
    segue.destinationViewController;
    }
    if ([segue.identifier isEqualToString:@"EmbedBViewController"])
    {
    self.bViewController=segue.destinationViewController
    }

   -(void)viewDidLoad
   {
     [super viewDidLoad];
     self.aViewController.bViewController=self.bViewController;
   }

问题1:使用情节提要完成我的任务是否正确? 问题2:容器视图有哪些限制?它是 addChildViewController API 的视觉替代品吗?如果不是,我应该在哪里实现子父关系?我应该在 prepareForSegue 方法中的组合视图控制器中使用

 [self addChildViewController:aViewController]; 
    [self.view addSubview:aViewController.view];

问题3:如何将容器视图放在可见区域之外?

如果我在某个地方犯了错误或对基本概念有很大的误解,请不要打败我。我做了很多 google-foo,我非常感谢任何帮助。非常感谢提前!

编辑:
我想在所有人之间建立关系。“B”视图的内容依赖于“A”,“C”视图的内容依赖于“B”。

4

1 回答 1

5

我认为你确实有一些误解。如果你想在故事板中实现容器视图控制器,你不需要在代码中做任何事情。从一个控制器开始,您称为组合视图控制器的控制器,然后拖入 3 个容器视图。最初,您可能希望调整它们的大小,使它们都是全高的,并使它们在主视图中并排放置。然后,您可以使用尺寸检查器更改它们的尺寸和位置,以便 C 的视图从组合控制器视图的右边缘开始,这样它就会在屏幕外开始。您将使用嵌入 segue 自动获得三个视图控制器连接到它们各自的容器视图。所有这三个控制器都将作为组合控制器同时实例化。

于 2013-02-16T17:47:44.127 回答