子类化从 xib 创建的自定义视图

Posted

技术标签:

【中文标题】子类化从 xib 创建的自定义视图【英文标题】:Subclassing a custom view that was created from a xib 【发布时间】:2015-08-24 17:31:13 【问题描述】:

我使用 xib (MyCustomCell.xib) 创建了一个自定义 UICollectionViewCell(我们称之为 MyCustomCell),我想创建一个 MyCustomCell 的子类(我们称之为 MyCustomCell2)。 MyCustomCell2 (MyCustomCell) 的父级有一个名为 titleLabel 的 IBOutlet。但是,即使我这样做了,MyCustomCell2 的 titleLabel 也总是返回 nil

    self.collectionView.
            registerClass(MyCustomCell2.self, forCellWithReuseIdentifier: cellIdentifier); 

在 viewDidLoad 中

    let cell = collectionView.
       dequeueReusableCellWithReuseIdentifier(cellIdentifier, forIndexPath: indexPath) as! MyCustomCell2;

在 cellForRowAtIndexPath 中

有什么想法吗?

【问题讨论】:

【参考方案1】:

首先,当您使用registerClass 时,您的插座无法连接。您需要使用registerNib

其次,需要在您正在加载的 xib 中连接插座。如果您正在加载子类的 xib,则需要在其中连接插座。

【讨论】:

但是 MyCustomCell 的 cellIdentifier 与 MyCustomCell2 不同,所以 registerClass:cellReuseIdentifier 不会导致崩溃吗? @user3808735 你需要使用 registerNib。并且您需要注册连接插座的笔尖

以上是关于子类化从 xib 创建的自定义视图的主要内容,如果未能解决你的问题,请参考以下文章

在自包含的自定义 UIView 子类中使用 .xib 文件进行原型设计

如何正确子类化从 Swift 中的 xib 加载的视图类?

从 XIB 加载自定义视图,如何使其响应自定义子类?

使用 Xib 创建的自定义视图在 Interface Builder 中不起作用

如何继承具有 .xib 文件的自定义视图

如何响应从 xib 加载的自定义视图中发生的操作?