3

カスタム テーブルセルを作成しようとしましたが、initWithStyle が呼び出されませんでした。

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

私のテーブルセルは正常に見えます:

- (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 nib をロードしようとしている方法:

- (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 に答える