Ios5 如何在iOS 5中使用故事板创建自定义视图控制器容器

Ios5 如何在iOS 5中使用故事板创建自定义视图控制器容器,ios5,storyboard,Ios5,Storyboard,在iOS5中,我想使用故事板功能创建一个自定义容器,其中嵌入2个ViewControllers。例如,在一个ViewController中嵌入表视图控制器和视图控制器 也就是说,一个视图控制器将有两个关系: 到表视图控制器 查看控制器,控制器中依次有4个ui图像视图或ui按钮 是否可以仅使用故事板的拖放功能而非编程方式创建这种类型的关系?,您应该只有一个视图控制器来控制场景。但是,此viewController可能有两个其他视图控制器,用于控制场景中的特定子视图。要执行此操作,请在场景viewC

在iOS5中,我想使用故事板功能创建一个自定义容器,其中嵌入2个
ViewControllers
。例如,在一个
ViewController
中嵌入表视图控制器和视图控制器

也就是说,一个视图控制器将有两个关系:

  • 到表视图控制器
  • 查看控制器,控制器中依次有4个
    ui图像
    视图或
    ui按钮

  • 是否可以仅使用故事板的拖放功能而非编程方式创建这种类型的关系?

    ,您应该只有一个视图控制器来控制场景。但是,此viewController可能有两个其他视图控制器,用于控制场景中的特定子视图。要执行此操作,请在场景viewController中创建属性,在本例中,一个属性用于tableViewController,另一个属性用于视图。我喜欢把东西放在一起,所以我制作了这两个ViewController插座,并在interface builder中创建它们。要在interface builder中创建它们,请从对象库中拉入一个对象,并将其类型设置为相关的viewController。将其连接到刚刚在场景的viewController中创建的相应插座-注意:这一点很重要,否则,如果使用ARC并使应用程序崩溃,viewController将被释放。然后将这些ViewController连接到您希望它们控制的视图,就完成了

    或者,如果愿意,您可以在场景viewController中实例化并跳上viewController

    希望这有帮助


    编辑:在反思时,这不是一个好主意,实际上与HIG背道而驰。您应该为每个内容屏幕只维护一个ViewController,而是尝试创建一个合适的视图类,并让单个视图控制器处理各种视图之间的交互。

    有一种方法可以做到这一点,但不太麻烦。下面介绍了UITabBarControllers的URL,您可以使用列表中的第一个视图控制器控制第一个子视图,第二个视图控制器控制另一个子视图。或者,您也可以修改代码以使用UISplitViewController


    基本上,它的工作原理是在iOS完成配置后在运行时替换tabbarcontroller。

    我们可以为视图创建插座,但如何在故事板中创建viewController插座?打开界面生成器并选择您的故事板。在右下角,您将看到对象库(从中拉出视图控制器和视图)在搜索框中键入对象,您将看到黄色/橙色的小对象拖动到场景中,并将其在标识检查器中的类型更改为视图控制器。然后连接场景中的一个视图,让它进行控制,就这样。在您的代码中,只需为视图控制器类提供一个IBOutlet,并将对象连接到它。但是如何将视图连接到控件?我所做的如下:选择情节提要文件->拖动viewcontroller(主视图控制器)、TableviewController(子视图控制器之一)和另外一个UIViewController(另一个子视图控制器)。然后在主视图控制器中,我为UITableViewController和UIViewController创建了2个IBOutlet。然后选择Main UIViewController->右键单击它并将创建的IBOutlet连接到故事板中的TableViewController。但它没有建立连接。请务必让我知道我是否做了错事我已经列出了一个如何做的示例您可以在此处下载源代码,希望此帮助斯科特,关于您的编辑:iOS 5中添加UIViewConroller限制就是为了这个目的(允许在一个“场景”中使用多个控制器)。我只是觉得文档和示例很简单,非常基本,或者根本不存在。你的例子是一个很好的开始。关于如何将UINavigationController替换为UITableView,您有什么想法吗?我对您的示例有一个问题。CustomViewController viewDidLoad事件从未触发…这正常吗?有办法解决这个问题吗?否则,这是一个非常好的帖子!谢谢。仅供参考-从iOS 7开始,这不再有效。也许有一种方法可以让类似的东西运行起来,但我们将项目切换到了标准的选项卡栏。