在父子 uitableviewcell 之间共享 xib 文件

Posted

技术标签:

【中文标题】在父子 uitableviewcell 之间共享 xib 文件【英文标题】:Shared xib file between parent and child uitableviewcell 【发布时间】:2016-01-22 16:08:59 【问题描述】:

我想创建一个通用的 uitableviewcell,我将通过覆盖一些方法来自定义它。

这是我的父母 UITableViewCellIconTitleGenericTableViewCell

我在 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 文件的主要内容,如果未能解决你的问题,请参考以下文章

Parallel::ForkManager - 在父子之间共享哈希的更好方法是啥? [复制]

如何在Vue中的非父子组件之间共享数据

如何在Vue中的非父子组件之间共享数据

如何在Vue中的非父子组件之间共享数据

(待续)进程控制---父子进程之间的复制

React 组件基本使用 ---父子组件之间的通信