我有这个代码:
//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 行,第三行只显示 1 个按钮。并且在调试区域出现: 辅助计数:0 用户数:25
辅助计数:4 用户数:25
辅助计数:8 用户数:25
辅助计数:12 用户数:25
辅助计数:16 用户数:25
辅助计数:20 用户数:25
辅助计数:24 用户数:25
auxCount 以 4 乘 4 递增。我认为这是因为 if 指令仅由第一个 for 循环执行,但我不知道为什么。 拜托,我需要你的帮助。
ps:抱歉我的英语!!
最佳答案
只要尝试一下这个 for 循环,就像我在我的应用程序中使用的那样,它对我有用。
根据列数和总计数找出行数
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
与 kCol
相同,唯一不同的是它是 float 类型,即您的情况下为 3.0
然后使用如下的for循环
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
循环并用适当的变量替换 if
条件
享受编码的乐趣:) 祝你好运
需要任何帮助,请评论我,我很乐意帮助您
关于iphone - 在另一个循环中循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10599416/