2012-05-15 3 views
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

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. Я думаю, что это потому, что если инструкции выполняются только первый цикл, но я не знаю, почему. Пожалуйста, мне нужна ваша помощь.

ps: извините за мой английский !!

+0

Кажется, здесь работает отлично. Вы уверены, что не меняете значение где-то еще? – Alexander

+0

Да, я уверен. auxCount и userCount используются только в этом коде –

ответ

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 такое же, как только kCol почтительность оно тип поплавка т.е. 3,0 в вашем случае

затем использовать для цикла, как показано ниже

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 состояние с соответствующими переменными

Enjoy Coding :) И удача

любая помощь - это ded just comment me я буду рад помочь вам

+0

Я не уверен, что понял, но я попытаюсь его реализовать –

+0

см. мой обновленный ответ, это поможет вам больше –

Смежные вопросы