我有一个生成100个文本字段10x10的循环。
int counter=0;
for (int i = 0; i < 10; i++)
{
for (int ii = 0; ii < 10; ii++)
{
counter++;
UITextField *tf = [[UITextField alloc] initWithFrame:CGRectMake(0 + 25 * i ,60+25*ii,25,25)];
counter++;
tf.tag =counter;
[self.view addSubview:tf];
}
}
这就是我得到的:
1.Tags表示
1 11 21 31 41 51 61 71 81 91
2 12 22 32 42 52 62 72 82 92
3 …………
2.这就是我想要的:
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21………..
有什么想法吗?谢谢!
答案 0 :(得分:2)
所以,忘掉counter
。您可以使用i
和ii
检索它。
让我们看看你的2 for
循环是做什么的,其中“ - ”表示什么都没有,并且“•”UITextField
被放置。
----------
----------
----------
然后:
•---------
----------
----------
然后:
•---------
•---------
----------
等
因此,我们很快发现i
代表一列,ii
代表一行。把它们重命名就好了。
现在,如果您已经记录i
和ii
,那么您可以找出逻辑是什么,这是:
[tf setTag:(ii*10+i+1)];
请注意,这只是一个善意的建议(不是“如果您自己进行调试就可以单独完成”),有时会记录事物(例如我们的案例中的计数器:i
或ii
)当它变得棘手时,理解它们,特别是在循环中。当我的循环没有达到我的预期时,我经常这样做。
答案 1 :(得分:1)
for (int i = 0; i < 10; i++)
{
for (int ii = 0; ii < 10; ii++)
{
UITextField *tf = [[UITextField alloc] initWithFrame:CGRectMake(0 + 25 * ii,60+25*i, 25, 25)];
tf.tag = ii + i * 10 + 1;
[self.view addSubview:tf];
}
}
答案 2 :(得分:0)
另一种可能性:
int row = 0;
int column = 0;
for (int i = 0; i < 100; i++) {
if (!(i % 10) && i) {
row++;
column = 0;
}
CGRect newRect = CGRectMake(25.0 * column, 60.0 + 25.0 * row, 25.0, 25.0);
UITextField *tf = [[UITextField alloc] initWithFrame:newRect];
tf.tag = i;
[self.view addSubview:tf];
column++;
}