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