【问题标题】:Shared xib file between parent and child uitableviewcell在父子 uitableviewcell 之间共享 xib 文件
【发布时间】: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 重复

【问题讨论】:

    标签: ios uitableview inheritance 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 的未知方法
    猜你喜欢
    • 1970-01-01
    • 2011-10-26
    • 2014-02-26
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    相关资源
    最近更新 更多