我不是Interface Builder的常规用户。我正在尝试使用xib
创建一个新的UIViewController类。让我说我正在创建一个名为myViewController
的控制器当我创建它时,XCode会创建3个文件,myViewController.h
,myViewController.m
和myViewController.xib
,但xib
只包含一个视图。它不应该包含viewController吗?
无论如何,我正在使用init
启动该视图控制器(是的,我已尝试使用initWithNibName
),问题在于它自己的委托方法,如viewDidAppear
或{{1不会在自己的类上触发。
它是否应该在viewDidLoad
和myViewController.xib
之间设置代理链接?怎么了?
答案 0 :(得分:5)
xib的“文件所有者”是您的视图控制器。如果在选择“文件所有者”时检查身份检查器,您将看到其自定义类应设置为myViewController
。
“文件所有者”也是您将视图控制器的IBOutlet
和IBAction
连接到的内容。
如果要以编程方式创建视图控制器的实例,请使用以下方法:
-[UIViewController initWithNibName:bundle:]
您可以将xib文件的名称传递给该方法,如下所示:
[[myViewController alloc] initWithNibName:@"myViewController" bundle:nil]
...或者,如果您传入nil
,它将默认使用具有与您的类名匹配的文件名的xib:
[[myViewController alloc] initWithNibName:nil bundle:nil]
如果您想使用另一个也将其“文件所有者”类设置为myViewController
的xib文件,则会传递该xib文件名:
[[myViewController alloc] initWithNibName:@"YourOtherXibFileName" bundle:nil]