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

Iphone 如何关联视图控制器和xib文件,iphone,cocoa-touch,ipad,Iphone,Cocoa Touch,Ipad,当我使用“创建xib文件”选项从“新建文件…”向导创建uiviewcontroller时,我可以通过SomeViewController*view=[[SomeViewController alloc]init]加载它。但是当我重命名xib文件名时,这段代码停止工作,即使xib中的文件所有者仍然是右视图控制器 我发现我只能通过调用initWithNib来获取视图。我只是想知道是什么将xib与幕后的视图控制器连接起来的?重命名文件后,我仍然可以使用init加载xib吗 问候 狮子座 我可以通过So

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

我发现我只能通过调用
initWithNib
来获取视图。我只是想知道是什么将xib与幕后的视图控制器连接起来的?重命名文件后,我仍然可以使用
init
加载xib吗

问候

狮子座

我可以通过
SomeViewController*view=[[SomeViewController alloc]init]
加载它

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

此外,请确保阅读UIViewController的文档,特别是讨论,其中说明:

如果为nibName参数指定nil,则必须重写 加载视图方法并在其中创建视图,否则必须提供 捆绑包中的nib文件,其名称(不带.nib扩展名) 与视图控制器类的名称匹配

这就是为什么视图控制器将加载一个.xib文件,该文件与视图控制器的类具有相同的名称(或由
-nibName
方法返回的名称,如文档中进一步解释的)

简而言之,UIViewController的功能与文档中的完全相同。

特别是文档中的:
1。如果视图控制器类名以单词“controller”结尾,如在MyViewController中,它将查找一个nib文件,该文件的名称与没有单词“controller”的类名匹配,如在MyView.nib中。2.它查找名称与视图控制器类名称匹配的nib文件。例如,如果类名为MyViewController,它将查找MyViewController.nib文件。