3

刚刚发生了一件奇怪的事情,我试图构建我的自定义表格单元,但我的 initWithStyle 没有被调用。

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

我的 Tablecell 看起来很正常:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // Initialization code
        NSLog(@"xx1111");
    }
    return self;
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}

我如何尝试加载 Customcell 笔尖:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *TFDCustomCell = @"TFDCell";
    TFDCell *cell = (TFDCell *)[tableView dequeueReusableCellWithIdentifier:TFDCustomCell];

    if (cell == nil) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TFDCell"
                                                     owner:self options:nil];
        for (id oneObject in nib) if ([oneObject isKindOfClass:[TFDCell class]])
            cell = (TFDCell *)oneObject;
    }

return cell;

}

但是NSLog(@"xx1111");没有出现在我的日志中。当我将 NSLog 放在“setSelected”中时,它“正常”工作

4

3 回答 3

13

解决方案很简单

-(id)initWithCoder:(NSCoder *)aDecoder
{
    NSLog(@"initWithCoder");

    self = [super initWithCoder: aDecoder];
    if (self)
    {

    }
    return self;
}
于 2013-01-19T19:06:38.590 回答
5

据我所知,如果您从 nibinitWithStyle:方法加载视图(在当前情况下为单元格)将不会被调用。重载awakeFromNib:方法而不是进行自定义初始化。

于 2013-01-19T14:06:22.653 回答
0

您没有使用initWithStyle初始化表格的单元格,因此您的自定义单元格的initWithStyle不会被触发。但是将调用 awakeFromNib来进行dequeueReusableCellWithIdentifier的初始化调用。

于 2015-01-23T02:58:03.320 回答