子类化具有xib的子类UIViewController

我需要有一些看起来很相似但有不同行为的UIViewControllers,所以我想我会用xib创建一个通用的UIViewController子类,然后在我需要的时候将它子类化,对于那些看起来相似的不同的UIViewController。

我正在努力实现以下目标

UIViewController子类(它有一个xib文件关联) – >并且能够根据我的喜好对其进行子类化(没有为子节点添加额外的xib文件)

到目前为止我做了什么:

xib文件表示具有多个UI元素的UIViewController。

我已将所有连接设置为文件的所有者@ xib文件。

带有xib的子类包含这个@ init方法:

self = [[[NSBundle mainBundle] loadNibNamed: [NSString stringWithFormat:@"ParentViewController"] owner:self options:nil] objectAtIndex:0]; 

当我将xib中的View属性连接到文件的所有者时,我得到一个exception,说我不能将View属性连接到父UIViewControllers和子UIViewControllers。

但是当View属性仅连接到与xib关联的UIViewController时,我得到一个空白屏幕,并且该sockets不可断开。

如果我实例化父vc而不是子,一切正常,如果一切都是以编程方式完成而不是使用xib,那么一切正常。

因为这个UIViewController显示了很多UI元素,所以我试图用xib设置它。

我真的不明白如何让孩子ViewControllers看起来像父的xib文件,并有自己的添加和行为。

如果您只有父类的xib(但没有子类),您可以在子类init中执行此操作:

 - (instancetype) init { if (self = [super initWithNibName:@"ParentViewController" bundle:nil]) { // init stuff for subclass } return self; } 

这是一个示例项目:

https://github.com/annabd351/SubClassFromParentNib