3

这是交易:我使用的是DEFacebookComposeViewController,它是UIViewController. 这个子类使用 xib 来设置用户界面。

现在我想添加一些额外的 GUI 元素,DEFacebookComposeViewController所以我想我会创建一个名为类似的子类MySubclassDEFacebookComposeViewController : DEFacebookComposeViewController并创建一个 xib。

然而,xibMySubclassDEFacebookComposeViewController.xib没有显示DEFacebookComposeViewController.xib我认为它会做的任何 GUI 元素,因为它是该类的子类。

所以基本上我只是想知道将新元素添加到子类的正确方法是UIViewController什么xib

4

1 回答 1

3

复制DEFacebookComposeViewController.xib并将其重命名为MySubclassDEFacebookComposeViewController.xib并根据您的喜好对其进行编辑。

UIViewController 在创建时将默认查找具有相同名称的 nib/xib(即使最后没有控制器部分)

来自 UIViewController 的文档:

如果您使用 nib 文件来存储视图控制器的视图,建议您在初始化视图控制器时明确指定该 nib 文件。但是,如果您不指定 nib 名称,并且不覆盖自定义子类中的 loadView 方法,则视图控制器会使用其他方式搜索 nib 文件。具体来说,它会查找具有适当名称(不带 .nib 扩展名)的 nib 文件,并在请求其视图时加载该 nib 文件。具体来说,它会(按顺序)查找具有以下名称之一的 nib 文件:

如果视图控制器类名以单词“Controller”结尾,如在 MyViewController 中,它会查找名称与类名匹配但不包含单词“Controller”的 nib 文件,如在 MyView.nib 中。它查找名称与视图控制器类的名称匹配的 nib 文件。例如,如果类名为 MyViewController,它会查找 MyViewController.nib 文件。

所以你需要指定你想要使用的 nib 或者在视图控制器之后命名它。由于您想添加/修改旧笔尖,因此您需要一份副本。

这是假设默认情况下DEFacebookComposeViewController.xib没有任何内容IBOutlets。如果有,您可以修改viewDidLoad. 无论是否有IBOutlets.

于 2013-04-26T12:57:04.643 回答