iphone:如何检查uitableview行模数

时间:2012-06-16 19:12:42

标签: iphone ios uitableview modulus

这是一个很难解释的问题所以我希望我可以说明它

我有一个tableview,我想要那个..

第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"];
}

我正在尝试使用模数,但我迷路了......那么有没有办法呢?

提前致谢

2 个答案:

答案 0 :(得分:3)

您应该使用mod 3,因为您有三个选项:

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

顺便问一下,你明白模运算是做什么的吗?这可能是有趣的(来自Wikipedia):

  

在计算中,模运算找到除法的余数   一个号码由另一个号码。

     

给出两个正数,a(股息)   和n(除数),模n(缩写为mod n)可以   被认为是剩余部分,被n分割。例如,   表达式“5 mod 4”将评估为1,因为5除以4叶   余数为1,而“9 mod 3”将评估为0,因为   9乘3除以0的余数;什么都没有   乘以3乘以3后减去9。


这是代码中发生的事情:

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
…         …         …

答案 1 :(得分:1)

使用静态计数器而不是使用模数 如下所示

    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