iphone: как проверить модуль строки uitableview

трудно объяснить проблему, поэтому я надеюсь, что смогу ее изложить

у меня есть табличное представление, и я хочу это ..

строка номер 1 имеет фон, а строка номер 2 имеет другой фон.

и ряд номер 3 имеют третий фон..

четвертый ряд должен иметь первый фон, а пятый - второй..

и так далее ..

я использовал этот код

if(row+1%1==0){
    bg = [UIImage imageNamed:@"row1.png"];
    selectionBg = [UIImage imageNamed:@"row1.png"];
}

else if(row+1%2==0){
    bg = [UIImage imageNamed:@"row2.png"];
    selectionBg = [UIImage imageNamed:@"row2.png"];
}else if(row+1%3==0){
    bg = [UIImage imageNamed:@"row3.png"];
    selectionBg = [UIImage imageNamed:@"row3.png"];
}

я пытаюсь использовать модуль, но я теряюсь ... так есть ли способ для этого?

заранее спасибо


person Mohamed Emad Hegab    schedule 16.06.2012    source источник
comment
...так работает модуль... в любом языке программирования   -  person David Rönnqvist    schedule 16.06.2012


Ответы (2)


Вы должны использовать mod 3, потому что у вас есть три варианта:

if (row % 3 == 0) {
    // Option A
} else if (row % 3 == 1) {
    // Option B
} else {
    // Option C
}

Кстати, вы понимаете, что делает операция по модулю? Это может быть интересно прочитать (из Википедии):

В вычислениях операция по модулю находит остаток от деления одного числа на другое.

Имея два положительных числа, a (делимое) и n (делитель), модуль n (сокращенно mod n) можно рассматривать как остаток от деления a на n. Например, выражение «5 по модулю 4» будет оцениваться как 1, потому что 5, разделенное на 4, дает остаток 1, а «9 по модулю 3» будет оцениваться как 0, потому что деление 9 на 3 дает остаток 0; нечего вычитать из 9 после умножения 3 на 3.


Вот что происходит в коде:

row       row % 3   option
0         0         A
1         1         B
2         2         C
3         0         A
4         1         B
5         2         C
6         0         A
…         …         …
person Jonathan    schedule 16.06.2012

Вместо использования модулей используйте статический счетчик. Как показано ниже.

    static int rowBGSelector = 0;
    switch (rowBGSelector) {
        case 0:
            NSLog(@"%d, first", i); //Chose BG 1
            break;
        case 1:
            NSLog(@"%d, second", i); //Chose BG 2
            break;
        case 2:
            NSLog(@"%d, third", i); //Chose BG 3
            break;

        default:
            rowBGSelector = -1; //Reset the static
            break;
    }

    rowBGSelector++; //Increment
person Omar Abdelhafith    schedule 16.06.2012