使用标记访问动态按钮

时间:2010-02-11 02:01:48

标签: iphone

您好我有一些代码可以创建动态按钮,如下所示:

- (void)viewDidLoad {

    for (int i = 0; i < 9; i++)   
        for (int j = 0; j < 8; j++) {  
            forControlEvents:UIControlEventTouchDown]; 
            UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
            button.frame = CGRectMake(10+i*34 , 130+j*30, 30 , 20 );
            [button setTitle:@"00" forState:  UIControlStateNormal];
            [button addTarget:self action:@selector(tapped:) forControlEvents:UIControlEventTouchUpInside];
            [self.view addSubview:button];
           button.tag = i;  
        } 
}

我希望能够访问一个标记为

的动态按钮

我该怎么办

欢迎任何评论。

感谢interdev

3 个答案:

答案 0 :(得分:1)

您遇到的另一个问题是您将在'j'循环中创建的每个按钮设置为标记'i'。这意味着您将有8个具有相同标签ID的按钮。您需要根据“i”和“j”索引对标记执行不同的操作。也许是这样的:

button.tag = (i*100)+j;

这样你就可以从标签中提取'i'和'j'索引。

答案 1 :(得分:1)

正如rekle所述,您的观点将被分配相同的标签。使用他的建议分配标记(i*100)+j。然后,要从同一个类中的另一个方法检索这些视图,可以使用[UIView viewWithTag:],如下所示:

for (int i = 0; i < 9; i++)   
    for (int j = 0; j < 8; j++) {
        UIButton *button = [self.view viewWithTag:(i*100)+j];
        // Do more stuff here...
    }
}

以下是Apple docs on viewWithTag

答案 2 :(得分:0)

你必须得到如下支票:

if (button.tag == 1) {
.....do something
}

或switch语句:

switch (button.tag)
 {
     case 1:
          statements
          break;

     case 2:
          statements
          break;

    //more case statements

     default:
          statements
          break;
 }