在父子 uitableviewcell 之间共享 xib 文件
Posted
技术标签:
【中文标题】在父子 uitableviewcell 之间共享 xib 文件【英文标题】:Shared xib file between parent and child uitableviewcell 【发布时间】:2016-01-22 16:08:59 【问题描述】:我想创建一个通用的 uitableviewcell,我将通过覆盖一些方法来自定义它。
这是我的父母 UITableViewCell :IconTitleGenericTableViewCell
我在 xib 文件中设计了我的单元格:IconTitleGenericTableViewCell.xib
现在我用这个子类对我的父单元进行了子类化:MyTitleCell
我想要的是 MyTitleCell 从其父级实例化指定的 xib 文件。
我尝试过使用
UINib *nib = [UINib nibWithNibName:key bundle:bundle];
[tableView registerNib:nib forCellReuseIdentifier:identifier];
但单元格返回
MyTitleCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier forIndexPath:indexPath];
是 IconTitleGenericTableViewCell 而不是 MyTitleCell。
我怎样才能获得相同的视图和网点链接没有任何 xib 重复?
【问题讨论】:
【参考方案1】:制作一个带有常规UIView
的笔尖,文件的所有者作为您的IconTitleGenericTableViewCell
,并在initWithStyle:reuseIdentifier:
中从笔尖加载视图并将其添加到单元格的内容视图中。
然后使用registerClass:forCellWithReuseIdentifier:
注册您的单元格。您注册的任何子类在出列时都将作为正确的类出来,并将来自 nib 的视图添加到它的内容视图中。
【讨论】:
对不起,迟到的评论。您的解决方案确实有效,但是通过这样做,y 失去了与 tableview 的交互。例如,我从不经历 - (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated。我必须在 xib 上禁用 userInteraction 但我将无法与具有 UIButton 或 UISwitch 的 uitableviewcell 进行交互【参考方案2】:制作一个独立于 nib 文件的 UIView,将所有出口连接到 FileOwner 并使用该函数加载您的单元格:
- (instancetype) initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
return [super initWithNibName:@"YourXibName" bundle:nil]);
【讨论】:
这个 "[super initWithNibName:@"YourXibName" bundle:nil]" 是 UITableViewCell 的未知方法以上是关于在父子 uitableviewcell 之间共享 xib 文件的主要内容,如果未能解决你的问题,请参考以下文章