0

我有一个动态的 UITableView。单击按钮时它将插入或删除行。

-(IBAction)foldingClicked:(id)sender
{
    self.isInfoFolded = !self.isInfoFolded;
    if( self.isInfoFolded)
    {
       //self.mainTable remove rows

    }else
    {
       //self.mainTable insert rows
    }    
}

运行时看起来不错。但是在点击了几次按钮之后,我的表格视图的 contentView 的高度增长了很多,并且 tableView 可以滚动到一个非常远的地方,屏幕上根本没有任何内容。

我怎样才能保持我的 tableView 的内容高度与实际需要的一样高?

我刚刚尝试在每次单击按钮时记录 contentSize.height 。看起来,它每次增长 123 像素或缩小 95 像素。我仍然不知道这 28 像素如何保持内容大小。我的代码一定有问题。但是我应该在哪里检查?

已编辑 - 我根据@Stavash 的建议检查了我的编码。

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if( indexPath.section == SECTION_STORE )
    {
        if( self.store)
        {
            return self.storeView.frame.size.height;
        }else
        {
            return self.noStoreView.frame.size.height;
        }

    }
    else
    {
        return 0;
    }
    return 0;
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if( indexPath.section == SECTION_STORE)
{
    if( self.store)
    {
        cellIdtifier = @"StoreCell";
    }else
    {
        cellIdtifier = @"No-StoreCell";

    }
    UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:cellIdtifier];
    if(!cell)
    {
            cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdtifier];
            if( self.store)
            {
                [cell.contentView addSubview: self.storeView];
            }else
            {
                [cell.contentView addSubview: self.noStoreView];
            }

        }
    return cell;
    }
    else
    {
        return nil;
    }
}

storeViewnoStoreView由不同高度的 nib 文件启动,高度灵活。似乎是因为单击按钮时单元格视图会增长或缩小,由于高度灵活,它们也会增长。我的问题最终通过使这两个视图固定高度来解决。:) :) :)

4

1 回答 1

0

我猜你是在为 UITableViewCells 分配一个相对高度,heightForRowAtIndexPath而不是分配一个绝对值。请记住,通常会重复使用单元格,因此这绝对是您面临的问题。

如果问题与此无关 - 请提供更多代码以帮助我们理解。

于 2013-07-08T10:52:07.667 回答