根据单元格数设置UITableView框架

时间:2013-01-16 07:15:30

标签: iphone uitableview

我从网络服务中获取数据列表。我希望我的表只显示包含数据而不包含其余数据的行数(空行)。下面提到的方法,我曾经这样做,但它没有效果,它只为非空单元格着色。任何人都可以为此指导我。

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
cell.backgroundColor = [UIColor grayColor]; 
}

提前致谢。

4 个答案:

答案 0 :(得分:0)

试试这个:

- (UIView *)tableView:(UITableView*)tableView viewForFooterInSection:(NSInteger*)section
{
    UIView *view=[[UIView alloc]init];
    return view;
}

这不会改变帧,但会在空单元格之间隐藏线条。 我想你想要那个。

答案 1 :(得分:0)

尝试使用此

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

    return array.count;

}

其中array将是您从Web服务获取的列表数据数组

答案 2 :(得分:0)

最后我得到了解决方案,

-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{    
//return 172;
if([arrayServ count] == 1)
{
    tableService.frame = CGRectMake(5, 20, 310, 40);
}

if([arrayServ count] == 2)
{
    tableService.frame = CGRectMake(5, 20, 310, 85);
}

if([arrayServ count] == 3)
{
   // return 172;
    tableService.frame = CGRectMake(5, 20, 310, 130);
}

if([arrayServ count] == 4)
{
    tableService.frame = CGRectMake(5, 20, 310, 175);
}

if([arrayServ count] == 5)
{
    tableService.frame = CGRectMake(5, 20, 310, 220);
}

if([arrayServ count] == 6)
{
    tableService.frame = CGRectMake(5, 20, 310, 265);
}

if([arrayServ count] == 7)
{
    tableService.frame = CGRectMake(5, 20, 310, 310);
}

if([arrayServ count] > 7)
{
    tableService.scrollEnabled = TRUE;
}
return 0;
}

答案 3 :(得分:0)

怎么样

if(arrayServ.count > 6)
{
    tableService.frame = CGRectMake(5, 20, 310, 6 * 45);
}
else
{
    tableService.frame = CGRectMake(5, 20, 310, arrayServ.count * 45);
}

而不是分开处理每个案件?

另外,如果你读了一个问题,他可能会认为你可能想要隐藏空单元格,而不是你想要调整uitableview的框架大小。