如何关联视图控制器和xib文件

时间:2011-10-02 01:41:35

标签: iphone cocoa-touch ipad

当我使用“创建xib文件”选项从“新文件...”向导创建uiviewcontroller时,我可以只加载SomeViewController *view = [[SomeViewController alloc] init]。但是当我重命名xib文件名时,即使xib中的文件所有者仍然是正确的视图控制器,此代码也会停止工作。

我发现只能通过调用initWithNib来查看视图。我只是想知道是什么将xib与场景后面的视图控制器联系起来了?在重命名文件后,我仍然可以使用init来加载xib吗?

此致

利奥

1 个答案:

答案 0 :(得分:2)

  

我可以只加载SomeViewController *view = [[SomeViewController alloc] init]

你可以,但(IMO)你不应该。 UIViewController的指定初始值设定项为-initWithNibName:bundle:。您可以在自己的视图控制器中实现-init方法,该方法调用[super initWithNibName:nil bundle:nil],但如果您坚持使用相同的名称,我认为代码更清晰。

另外,请务必阅读UIViewController的文档,特别是讨论内容:

  

如果为nibName参数指定nil,则必须覆盖   loadView方法并在那里创建您的视图,或者您必须提供   您的包中的nib文件的名称(不带.nib扩展名)   匹配视图控制器类的名称。

这就是为什么视图控制器将加载一个与视图控制器的类名称相同的.xib文件(或-nibName方法返回的名称,作为文档中的进一步说明)。

简而言之,UIViewController的运行完全符合记录。