我在视图控制器上有十个选项,每个选项都“推送”到同一新的视图控制器,以显示特定数量的按钮(对于每个选项,可以使用不同数量的按钮,范围从3个按钮到15个按钮)。目前,我的代码的性能与this question上发布的答案相似。

所有这些按钮都是使用for循环为每个选项动态创建的(其数量显然取决于数组的长度):

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if(option 1) {
    Array contains different values...
    }

    if(option 2) {
    Array contains different values...
    }

    etc...

    for(int i = 0; i < xCoordinatePosition.count; i++) {
       UIButton *imageOne = [UIButton buttonWithType:UIButtonTypeCustom];
       [imageOne setTag:i];
       [imageOne addTarget:self action:@selector(webViewChanged:) forControlEvents:UIControlEventTouchUpInside];
    }
}


如您所见,我为每个按钮设置了一个标签,以区分动态创建的按钮,因为我希望每个按钮在选择时都显示不同的UIWebView

当我选择一个选项并在结果页面上用NSLog记录每个按钮的结果标签后,我得到的答复是:1、2、3等。

- (IBAction)webViewChanged:(UIButton*)sender
{
    NSLog(@"%d", sender.tag);
}


问题是,相对于所有选项按钮,我希望每个按钮都有一个唯一的编号-当前我的十个选项中的每一个都返回带有标签1、2、3等(最多十个)的按钮,而我需要返回第一个选项1-10,第二个选项返回11-20,以此类推,因为每个按钮都会返回唯一的内容。

例如:

单击一个选项标签为7的按钮将带来完全不同的Web视图,而不是单击另一个选项标签为7的按钮,因此,我需要对每个按钮进行区分。

有谁知道我该如何设置标签,使其对每个选项来说都是唯一的(而不是像当前所做的那样仅将当前所选选项的每个按钮都设置为唯一)?

最佳答案

只需使用另一个integerVariable,其值的倍数为10。

int factor;
if(option 1)
{
   factor = 0;
}
if(option 2)
{
   factor = 10;
}
etc..


然后将标签设为

[imageOne setTag:i+factor];

关于iphone - 区分动态生成的按钮,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15228629/

10-10 00:37
查看更多