UITableViewCells最初没有出现

时间:2012-01-25 21:50:14

标签: ios cocoa-touch uitableview uiscrollview

我有三个看起来完全相同的UITableView。每个都放在UIScrollView的不同子视图中。滚动时,我可以看到每张桌子。第一张桌子显得很完美。但是,只有第二和第三个表格显示背景颜色。

tableView:cellForRowAtIndexPath:正在为每个表的每一行调用,在那里我将子视图插入到单元格的contentView中。子视图在调用此方法之前已经创建,并且在给定行的三个表中重复使用(尝试使表看起来相同)。

我做了两个有趣的发现:

  • 虽然最初没有显示单元格,但在滚动后会显示该行以隐藏该行,然后再次显示该行。
  • 滚动后出现单元格时,它已从另一个表格移出。它不再出现在它所展示的表格中。

这是我的代码:

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

    static NSString *CellIdentifier = @"PlotCellID";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"PlotCell" owner:self options:nil];

        if ([nib count] > 0)
            cell = self.plotCell;
        else
            NSLog(@"Failed to load AlertCell nib!");
    }

    // Set up the cell...
    NSUInteger row = [indexPath row];
    AppDelegate *del = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    ResultSet *rs = del.resultPlots;

    CPTGraphHostingView *cellPlotView = [rs.hostingViews objectAtIndex:row];
    cellPlotView.frame = cell.contentView.bounds;

    cellPlotView.autoresizingMask = UIViewAutoresizingFlexibleWidth;    
    [cell.contentView insertSubview:cellPlotView atIndex:0];

    return cell;
}

cellPlotView引用已创建的子视图。

任何想法如何解决这个问题,以便在滚动时我能正确显示所有表格?好像细胞不能重复使用内容。感谢。

1 个答案:

答案 0 :(得分:0)

视图只能有一个超级视图。因此,创建3个相同的CPTGraphHostingView视图。