UITableViewCell的contentView自定义子视图将丢失

时间:2013-02-15 09:56:48

标签: ios objective-c xcode

我正在做一些内存泄漏分析,并注意到我添加到我的tableview单元格contentView的customView正在构建并且永远不会被破坏。我确定我正确处理它们。

我在表中只有5个单元格,但偶尔在调用此函数时,它会使其contentView中没有子视图的单元格出列。

我不明白这是怎么发生的? contentView实际上从未被破坏,只是以某种方式从单元格中删除。

任何人都可以解释这里发生了什么吗?

我在下面发布了我的功能。

由于 斯图尔特

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

    static NSString* const CELL_IDENTIFIER = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CELL_IDENTIFIER forIndexPath:indexPath];

    BRAContentView *contentView = nil;
    for ( UIView *subView in cell.contentView.subviews )
    {
        if ( [subView isKindOfClass:[BRAContentView class]] )
        {
            contentView = (BRAContentView*)subView;
            break;
        }
    }


    if ( !contentView )
    {
        contentView = [BRAContentView content];
        [cell.contentView addSubview:contentView];
        [contentView setTranslatesAutoresizingMaskIntoConstraints:NO];

        NSDictionary *viewDict = [NSDictionary dictionaryWithObject:contentView forKey:@"contentView"];

        NSArray *constraintsArray = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[contentView]-0-|" options:0 metrics:nil views:viewDict];
        constraintsArray = [constraintsArray arrayByAddingObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[contentView]-0-|" options:0 metrics:nil views:viewDict]];

        [cell.contentView addConstraints:constraintsArray];
    }

    contentView.delegate = self;
    // customise contentView here

    return cell;
}

0 个答案:

没有答案