子类化具有 xib 的子类 UIViewController

2023-11-24

我需要有一些看起来非常相似但具有不同行为的 UIViewController,所以我想我应该使用 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 属性连接到文件所有者时,出现异常,提示我不能 将 View 属性连接到父 UIViewController 和子 UIViewController。

然而,当 View 属性仅连接到与 xib 关联的 UIViewController 时,我会看到一个空白屏幕,并且该插座不可断开连接。

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

由于此 UIViewController 显示了很多 UI 元素,因此我尝试使用 xib 设置它。

我只是不太明白如何让子 ViewController 看起来像父级的 xib 文件并具有自己的添加和行为。


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

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

这是一个示例项目:

https://github.com/annabd351/SubClassFromParentNib

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

子类化具有 xib 的子类 UIViewController 的相关文章

随机推荐