Interface Builder会自动实例化您拖动的自定义控制器吗?

时间:2011-02-21 10:07:13

标签: iphone uiviewcontroller interface-builder

所以我有:

  • 创建了一些自定义 控制器(添加文件 UIViewController子类)
  • 在Interface Builder中
  • 拖了两个 来自库的ViewController项 到MainWindow.xib(即何时 applicationDelegate是,主要的 窗口)窗格,然后设置他们的类 名称是自定义的名称 控制器分别

现在我已经这样做了:

  • 这应该自动采取 关心实例化这些 控制器用于 应用代表 “didFinishLaunchingWithOptions” 方法例如?

  • 或者我仍然需要创建这些 应用程序的控制器 委托* .h和* .m文件?

  • 或换句话说,再试一次 了解IB实际上做了什么 你创造的时候 customViewControllers并链接它们 向上...

2 个答案:

答案 0 :(得分:3)

更详细一点:当您将对象添加到nib / xib文件时,会发生什么是创建活动对象,然后将其存档到nib文件中。当您加载nib文件时,这些已归档的对象将被取消归档并使用与最初归档时相同的设置“恢复生命”。此外,您在实际(UILabel,UIViewController等)对象和代理对象(“文件所有者”)之间的nib文件中建立的任何连接都会填充指向那些新未归档/创建的对象的指针。请注意文件所有者的特殊角色:文件所有者所分配的类是在nib加载时创建的 not 。相反,在加载nib文件时,例如,使用此调用:

[[NSBundle mainBundle] loadNibNamed:@"MyNib" owner:ownerObject options:nil];

所有在ownerObject中具有nil值的出口(与文件所有者中指定的类型相同)将连接到nib中的对象,然后将其设置为指向那些新创建的对象。

您可以使用此事实创建自适应和可重复使用的View层次结构,您可以在任何位置加载和使用它们:UITableViews的页眉/页脚/自定义单元格,可重复使用 - 您自己创建/打包的“窗口小部件”并且在整个应用程序等中反复使用。一旦你理解了这一点,你的Cocoa(触摸)视图编程技能就会“上升到一个水平”,创建结构化的模块化视图对象会变得更加容易和有趣!

答案 1 :(得分:-1)

如你所说,nib文件中的组件会从nib加载时自动实例化。 在许多情况下,您可能也希望为控制器提供.h / .m文件,以便在其中放置一些自定义代码。