自定义容器视图控制器+故事板?

时间:2013-02-16 17:26:07

标签: objective-c ipad storyboard uistoryboardsegue container-view

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

enter image description here

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

enter image description here

例如在我的故事板中,我有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”。

1 个答案:

答案 0 :(得分:5)

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