当我使用“创建xib文件”选项从“新文件...”向导创建uiviewcontroller时,我可以只加载SomeViewController *view = [[SomeViewController alloc] init]
。但是当我重命名xib文件名时,即使xib中的文件所有者仍然是正确的视图控制器,此代码也会停止工作。
我发现只能通过调用initWithNib
来查看视图。我只是想知道是什么将xib与场景后面的视图控制器联系起来了?在重命名文件后,我仍然可以使用init
来加载xib吗?
此致
利奥
答案 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的运行完全符合记录。