我是Iphone App的新程序员......我想要表格中的三个单元格(高度不同)
我为这个任务编写了代码......输出结果令人满意......但我不知道......这是正确的方法还是不行......
提前感谢..... :)
CGRect frame=CGRectMake(5, 43, 311, 363);
UITableView *table=[[UITableView alloc]initWithFrame:frame style:UITableViewStylePlain];
table.dataSource=self;
table.delegate=self;
-(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath: (NSIndexPath *)indexPath
{
static int counter=1;
if(counter==1)
{
counter=counter +1;
return 163;
}
else if(counter ==2)
{
counter=counter +1;
return 80;
}
else
{
counter=counter +1;
return 60;
}
if(counter==4)
{
counter=1;
}
}
答案 0 :(得分:0)
不要使用
static int counter=1;
从NSIndexPath获取row
。
int row = indexPath.row;
答案 1 :(得分:0)
不,这不对。使用indexPath.row
代替您的counter
变量。这将是您的代表被询问的行号。例如,向上滚动时,您可能无法使用当前代码获得预期结果。
答案 2 :(得分:0)
您的static int counter
不是全局变量,因此您的代码无效。
它可以工作,如果你从它做一个ivar但这不是解决它的正确方法。
indexPath
委托方法提供的heightForRowAtIndexPath:
变量保存实际项目的索引。只需在代码中调用indexPath.row
(这是实际的计数器),而不是计数器。
答案 3 :(得分:0)
从您的代码中我猜你有3行高度的旋转,所以最好的方法是使用int row = indexPath.row % 3;
这将给你一个循环0,1,2作为值来测试而不是你的计数器