InterfaceBuilderを使用しないでカスタムCellを使用したTableViewを作成しています。

ViewControllerUITableViewを追加して
CustomCellクラスを作成し、そのContentViewCustomViewクラスを追加しています。

ViewController

[_tableView registerClass:[CustomCell class] forCellReuseIdentifier:@"Cell"];

を使用して起動すると
1つのセルに複数のセルがかぶって表示されます

ViewController.m

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
    return cell;
}

CustomCell.m

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

        if (self) {
            for (UIView *subview in [self.contentView subviews]) {
                [subview removeFromSuperview];
            }

            _dateLabel  = [[UILabel alloc] initWithFrame:CGRectMake(16, 0, 320 - (16 * 2), 20)];
            _dateLabel.font = [UIFont systemFontOfSize:15];
            _dateLabel.text = [[NSDate date] description];
            [self.contentView addSubview:self.dateLabel];

            // ここのビューがスクロール時に2重に表示されることがある
            CGRect rect1 = CGRectMake(0, 20, 160, 20);
            _view1 = [[CustomView alloc] initWithFrame:rect1];
            [self.contentView addSubview:_view1];

            CGRect rect2 = CGRectMake(160, 20, 160, 20);
            // その他ViewをaddSubView
        }
        return self;
    }

CustomView.m

    - (id)initWithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if (self) {
            // Initialization code
            [self initializeView:frame];
        }
        return self;
    }
    -(void)initializeView:(CGRect)frame
    {
        for (UIView *subview in [self subviews]) {
            [subview removeFromSuperview];
        }

        _titleLabel = [[UILabel alloc] init];
        _titleLabel.frame = CGRectMake(44 + 16, 0, 160 - 44, 22);
        _titleLabel.text = @"text";
        [self addSubview:_titleLabel];

        _conditionLabel = [[UILabel alloc] init];
        _conditionLabel.frame = CGRectMake(44 + 16, 22 + 4, 160 - 44, 22);
        _conditionLabel.text = @"text2";
        [self addSubview:_conditionLabel];
    }

原因はcellForRowAtIndexPathで@"Cell"のIDでセルを再使用しているため起こる原因と思いますが、
registerClassでIDを固定しているため、複数のIDで再使用をしないということができません。
カスタムCellを使用して、そのCellにaddViewした状態で表示が重ならない方法はありますか?

こんな状態で表示されます