我有一个动态的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;
}
}
storeView
和noStoreView
是从具有不同高度的nib文件启动的,并且高度灵活。
看起来因为单击按钮时单元格视图会增大或缩小,因为高度灵活,它们也会增长。
我的问题最终通过使这两个视图修复高度来解决。 :) :) :))
答案 0 :(得分:0)
我猜你正在为heightForRowAtIndexPath
中的UITableViewCells分配相对高度而不是分配绝对值。请记住,通常细胞会被重复使用,所以这肯定是你所面临的那种问题。
如果问题与此无关 - 请提供更多代码以帮助我们理解。