我有这段代码:
//Value of userCount is 25
auxCount = 0;
for (int y_axis=0; y_axis<=8; y_axis++) //ROWS
{
for (int x_axis=0; x_axis<=2; x_axis++) //COLUMNS
{
if (auxCount<userCount) {
NSLog(@"auxCount: %i\n",auxCount);
NSLog(@"userCount: %i\n\n",userCount);
UIButton *btn= [[UIButton alloc] initWithFrame:CGRectMake(16+100*x_axis,115.0*y_axis,88.0 ,88.0)];
UILabel *userLabel = [[UILabel alloc] initWithFrame:CGRectMake(16+100*x_axis,90+115.0*y_axis, 88.0, 15.0)];
userLabel.textAlignment = UITextAlignmentCenter;
userLabel.text = mensaje;
btn.backgroundColor=[UIColor groupTableViewBackgroundColor];
[scrollViewUsers addSubview:btn];
[scrollViewUsers addSubview:userLabel];
auxCount++;
}
}
}
有了这个,我想要一个包含3列和X行的矩阵,但只显示3行,第3行只显示1个按钮。并在调试区域出现: auxCount:0 userCount:25
auxCount:4 userCount:25
auxCount:8 userCount:25
auxCount:12 userCount:25
auxCount:16 userCount:25
auxCount:20 userCount:25
auxCount:24 userCount:25
auxCount增加4乘4.我认为这是因为if指令只由第一个for循环执行但我不知道为什么。 拜托,我需要你的帮助。
ps:对不起我的英语!!
答案 0 :(得分:1)
试试这个循环,就像我在我的应用程序中使用它一样。
根据列数和总计数
找出行数int r;
float rem = [dao libraryCount] % kCol;
if(rem == 0.0f)
r = floor([dao libraryCount]/kD);
else
r = ceil([dao libraryCount]/kD);
此处r
代表数字,如果行[dao libraryCount
是项目总数而kCol
是列的固定数量,则为3,kD
与{相同{1}}只有deference它是float的类型,在你的情况下是3.0
然后使用for循环,如下所示
kCol
for (int row = 0; row < r; ++row)
{
for (int col = 0; col < kCol; ++col)
{
//Your Code to display or any thing
}
}
使用此代码
auxCount
将其放在int index = (row * kCol) + col;
if(index < [dao libraryCount])
{
//Your Code to display or any thing
}
循环中,而不是使用for
只需更改两个++
循环并使用适当的变量替换for
条件
享受编码:) 祝你好运
需要任何帮助才能评论我,我很乐意帮助您