这是一个很难解释的问题所以我希望我可以说明它
我有一个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"];
}
我正在尝试使用模数,但我迷路了......那么有没有办法呢?
提前致谢
答案 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