0

我有这个代码:

//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 个按钮。并在 Debug 区域出现: auxCount: 0 userCount: 25

辅助计数:4 用户计数:25

辅助计数:8 用户计数:25

辅助计数:12 用户计数:25

辅助计数:16 用户计数:25

辅助计数:20 用户计数:25

辅助计数:24 用户计数:25

auxCount 以 4 为单位递增 4。我认为这是因为 if 指令仅由第一个 for 循环执行,但我不知道为什么。拜托我需要你的帮忙。

ps:对不起我的英语!!

4

1 回答 1

1

试试这个 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是它是浮点类型,即在您的情况下为 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

享受编码 :) 祝你好运

需要任何帮助只是评论我我很乐意帮助你

于 2012-05-15T11:13:12.450 回答