首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在哪里可以声明自定义表单元格的自定义初始化?

问在哪里可以声明自定义表单元格的自定义初始化?
EN

Stack Overflow用户
提问于 2014-09-17 22:29:19
回答 2查看 205关注 0票数 0

如果我有一个自定义表单元格,它由:

代码语言:javascript
复制
tableView dequeueReusableCellWithIdentifier

在自定义单元格的什么地方可以设置自定义初始化参数?为我的自定义表单元格自动生成的.m文件包括:

代码语言:javascript
复制
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    NSLog(@"INITWITHSTYLE!");
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // Initialization code
    }
    return self;
}

我添加了NSLog调用,以查看是否调用过该initWithStyle,但从未访问过该NSLog,这意味着也从未调用过该特定的initWithStyle。那么,当使用dequeueReusableCellWithIdentifier初始化自定义表单元格时,实际使用的是该自定义单元格的哪个init方法?

EN

回答 2

Stack Overflow用户

发布于 2014-09-17 22:34:04

你的单元格会在-(void)awakeFromNib中初始化一次(即使它来自故事板)。

然后,没有办法知道它将从哪里出队,但是当它从屏幕上移除并排队到可重用单元池中时,它可以接收到一条消息:此时调用- (void)prepareForReuse。

票数 1
EN

Stack Overflow用户

发布于 2014-09-17 22:35:34

如果使用情节提要,则可以使用awakeFromNib,否则应调用initWithStyle:reuseIdentifier:

代码语言:javascript
复制
- (void)awakeFromNib {
}

但是您应该记住,单元格将被重用,因此假设您的单元格在第一次调用awakeFromNib时被调用,但以后可以重用该单元格,并且不会再次调用此方法,在这种情况下,如果它对您不起作用,您可以在传递数据时使用自定义设置器

//扩展

在注释中,您问到当单元格被重用时会调用什么方法。你可以使用prepareForReuse,请阅读讨论(取自苹果)

代码语言:javascript
复制
- (void)prepareForReuse

讨论如果UITableViewCell对象是可重用的-也就是说,它有一个重用标识符-就在该对象从UITableView方法dequeueReusableCellWithIdentifier:返回之前调用该方法。出于性能原因,应仅重置与内容无关的单元格属性,例如alpha、编辑和选择状态。tableView中表格视图的委托:cellForRowAtIndexPath:在重用单元格时应始终重置所有内容。如果单元对象没有关联的重用标识符,则不会调用此方法。如果重写此方法,则必须确保调用超类实现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25893353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档