这是交易:我正在使用DEFacebookComposeViewController,它是UIViewController
的自定义子类。该子类使用xib来设置用户界面。
现在我想向DEFacebookComposeViewController
添加一些额外的GUI元素,所以我想我会创建一个名为MySubclassDEFacebookComposeViewController : DEFacebookComposeViewController
的子类并创建一个xib。
然而xib MySubclassDEFacebookComposeViewController.xib
没有显示来自DEFacebookComposeViewController.xib
的任何GUI元素,我认为它会做,因为它是该类的子类。
所以基本上我只是想知道将新元素添加到子类UIViewController
和xib
的正确方法是什么?
答案 0 :(得分:3)
复制DEFacebookComposeViewController.xib
并将其重命名为MySubclassDEFacebookComposeViewController.xib
并根据您的喜好对其进行修改。
默认情况下,UIViewController会在创建时查找具有相同名称的nib / xib(即使最后没有控制器部分)
来自UIViewController的文档:
如果您使用nib文件来存储视图控制器的视图,那么它就是 建议您明确指定该nib文件 初始化视图控制器。但是,如果您没有指定 nib名称,并且不要覆盖自定义中的loadView方法 子类,视图控制器使用other搜索nib文件 手段。具体来说,它会查找具有适当名称的nib文件 (没有.nib扩展名)并在其视图时加载该nib文件 请求。具体来说,它(按顺序)查找带有的nib文件 以下名称之一:
如果视图控制器类名称以“Controller”结尾,则为 在MyViewController中,它查找名称与之匹配的nib文件 没有单词“Controller”的类名,如MyView.nib中所示。它看起来 对于名称与视图控制器名称匹配的nib文件 类。例如,如果类名是MyViewController,它看起来 对于MyViewController.nib文件。
因此,您需要指定要使用的nib或在视图控制器后命名它。由于您要添加/修改旧笔尖,因此需要它的副本。
这假设默认情况下DEFacebookComposeViewController.xib
没有任何IBOutlets
。如果有,您可以修改viewDidLoad
中的现有笔尖。无论是否IBOutlets
,都可以在加载视图后始终添加更多子视图。