我有以下代码:
//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个按钮。并在“调试”区域中出现:
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:对不起,我的英语!!
最佳答案
就像我在我的应用程序中使用过的那样,只需尝试一下循环即可。
根据列数和总计数找出行数
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
条件享受编码:)
还有祝你好运
需要任何帮助只是评论我,我将很乐意为您提供帮助