TableView内容高度不断增长

时间:2013-07-08 10:40:51

标签: ios scrollview

我有一个动态的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文件启动的,并且高度灵活。 看起来因为单击按钮时单元格视图会增大或缩小,因为高度灵活,它们也会增长。 我的问题最终通过使这两个视图修复高度来解决。 :) :) :))

1 个答案:

答案 0 :(得分:0)

我猜你正在为heightForRowAtIndexPath中的UITableViewCells分配相对高度而不是分配绝对值。请记住,通常细胞会被重复使用,所以这肯定是你所面临的那种问题。

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