在另一个循环中循环

时间:2012-05-15 11:04:42

标签: iphone objective-c ios xcode

我有这段代码:

//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:对不起我的英语!!

1 个答案:

答案 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条件

享受编码:) 祝你好运

需要任何帮助才能评论我,我很乐意帮助您