gpt4 book ai didi

ios - 与另一个 UIView 共享 Nib 时如何初始化 UIView 子类

转载 作者:行者123 更新时间:2023-11-28 21:51:30 25 4
gpt4 key购买 nike

我有 2 个 UIView,它们都使用相同的 Nib :

PictureCellLabelCell 均继承自 ParentCell。这两个都使用 nib picturecell.xib,因为它们的布局非常相似。

PictureCellLabelCell 都覆盖了 ParentCell 中名为 setImage 的方法。

当前 picturecell.xib 的所有者设置为 PictureCell

我通过执行 [[NSBundle mainBundle] loadNibNamed:@"picturecell"owner:self options:nil][0];

实例化了 PictureCell

我将如何实例化 LabelCell

最佳答案

我会为每个单元格制作单独的 xib,并使用 registerNib:forIdentifier: 而不是像以前那样加载它们。您可以将单元格复制并粘贴到新的 xib,这样您就不必重新制作它。

编辑后:

我确实找到了一种方法,可以在两个单元子类之间共享在 xib 中创建的通用 UI。与其制作一个单元格的 xib,不如制作一个 UIView。将所有常见的 subview 添加到其中,并使文件的所有者成为基本单元类,这样您就可以连接您在该类中创建的任何 socket 。在基本单元格的 init 方法中,您可以将此 View 添加为 contentView 的 subview (“content”是在基本单元格的 .h 中创建的属性)。

@implementation RDBaseCell

-(instancetype) initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {

_content = [[NSBundle mainBundle] loadNibNamed:@"CellContent" owner:self options:nil][0];
[self.contentView addSubview:_content];
}
return self;
}

-(void)layoutSubviews {
[super layoutSubviews];
self.content.frame = self.contentView.bounds;
}

在 TableView Controller 中,为您的两个子类注册该类。在子类的 init 方法中,您可以添加特定于该子类的任何自定义 View 。

关于ios - 与另一个 UIView 共享 Nib 时如何初始化 UIView 子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28160313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com