我不是 Interface Builder 的普通用户。我正在尝试使用 xib
创建一个新的 UIViewController 类。假设我正在创建一个名为 myViewController
的 Controller 当我创建它时,XCode 会创建 3 个文件,myViewController.h
、myViewController.m
和 myViewController.xib
但 xib
只包含一个 View 。它不应该包含一个 viewController 吗?
无论如何,我只用 init
初始化那个 View Controller (是的,我试过用 initWithNibName
),问题是它自己的委托(delegate)方法,比如 viewDidAppear
或 viewDidLoad
不会在其自己的类上触发。
它不应该在 myViewController.xib
和 myViewController.m
之间有一个委托(delegate)链接吗?怎么了?
最佳答案
xib 的“文件所有者”是您的 View Controller 。如果在选择“文件所有者”时检查身份检查器,您会看到其自定义类应设置为 myViewController
。
“文件的所有者”也是您连接 View Controller 的 IBOutlet
和 IBAction
的对象。
当您想以编程方式创建 View Controller 的实例时,可以使用此方法:
-[UIViewController initWithNibName:bundle:]
您可以像这样将 xib 文件的名称传递给该方法:
[[myViewController alloc] initWithNibName:@"myViewController"bundle:nil]
... 或者,如果您改为传入 nil
,它将默认使用文件名与您的类名相匹配的 xib:
[[myViewController alloc] initWithNibName:nil bundle:nil]
如果您想使用另一个 xib 文件,并且其“文件所有者”类也设置为 myViewController
,您可以传递该 xib 文件名:
[[myViewController alloc] initWithNibName:@"YourOtherXibFileName"bundle:nil]
关于ios - UIviewController 不触发自己的委托(delegate)类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24099329/