ios - 子类化具有 xib 的子类化 UIViewController

标签 ios uiviewcontroller xcode6 subclass xib

我需要一些看起来非常相似但具有不同行为的 UIViewController,因此我想我会使用 xib 创建一个通用的 UIViewController 子类,然后在需要时为那些看起来相似的不同 UIViewController 进行子类化。

我正在努力实现以下目标

UIViewController 子类(具有关联的 xib 文件)-> 并且能够根据需要多次对其进行子类化(无需为 child 添加额外的 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 时,我得到一个空白屏幕,并且该 socket 不可断开。

如果我实例化父 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

关于ios - 子类化具有 xib 的子类化 UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27336730/

相关文章:

ios - 导航栏中的自定义 View 按钮有不需要的上边距

ios - 水平滚动的 UICollectionViewCell 内部的 UITableView 垂直滚动问题

iOS 向 UITableView 添加图像导致显示时间过长

ios - 弹出 View 时传递参数

objective-c - 如何获取 self.navigationItem.title 的值并设置为新变量?

ios - 模拟器错误 FBSSystemServiceDomain 代码 4

ios - 椰子足 : Library Not found

ios - 如何从 AWS S3 解析/请求对象以填充自定义 UICollectionView?

ios - 将 iPhone 地址簿与后端服务器同步

ios - UIActionSheet - 快照尚未呈现的 View 会导致空快照