用于自定义 UITableViewCell 的 awakeFromNib 与 initWithFrame

Posted

技术标签:

【中文标题】用于自定义 UITableViewCell 的 awakeFromNib 与 initWithFrame【英文标题】:awakeFromNib vs. initWithFrame for custome UITableViewCell 【发布时间】:2014-07-07 23:41:29 【问题描述】:

我需要制作一个自定义 UITableViewCell,所以我创建了一个带有相关 nib 文件的子类。

我需要添加一些子视图。使用 nib 文件时,awakeFromNib 会替换 initWithFrame 吗?我在我的cellForRowAtIndexPath 方法中使用[[NSBundle mainBundle] loadNibNamed:

我会像这样使用 initWithFrame 吗?

- (id)initWithFrame:(CGRect)frame

    if ((self = [super initWithFrame:frame]))
    
        self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 100, 320)]

        [self addSubview:self.horizontalTableView];
    

    return self;

还是像这样在 awakeFromNib 中这样做

- (void)awakeFromNib

   self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 100, 320)]

            [self addSubview:self.horizontalTableView];

【问题讨论】:

【参考方案1】:

创建 Xib 时,不会使用 initWithFrame。但是,将使用 initWithCoder。因此,您可以在其中进行额外的实例化。但是,在 awakeFromNib 中初始化其他控件也没有错。

编辑:针对您在下面的第一条评论,请查看此相关问题:

Should I be using awakeFromNib or initWithCoder here?

【讨论】:

是 initWithCoder 还是 awakeFromNib 是首选?你只用过 1 还是两者都用过?哪一个都有缺点?

以上是关于用于自定义 UITableViewCell 的 awakeFromNib 与 initWithFrame的主要内容,如果未能解决你的问题,请参考以下文章

用于自定义 UITableViewCell 的 awakeFromNib 与 initWithFrame

UIButton 不适用于自定义 UITableViewCell (Swift)

带有用于突出显示的图像的自定义 UITableViewCell

用于登录输入的自定义 uitableviewcell - 用户名和密码

自定义 uitableviewcell 中的 Uibuttons

##DAY12 UITableViewCell自定义