Iphone 区分动态生成的按钮

Iphone 区分动态生成的按钮,iphone,ios,objective-c,arrays,cocoa-touch,Iphone,Ios,Objective C,Arrays,Cocoa Touch,我在视图控制器上有十个选项,每个选项“推”到相同的新视图控制器,显示特定数量的按钮(对于每个选项,可能有不同数量的按钮可用,从3个按钮到15个按钮不等)。目前,我的代码的性能与上发布的答案类似 所有这些按钮都是使用for循环为每个选项动态创建的(数量明显取决于数组的长度): - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if(option 1) { Array contains dif

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

所有这些按钮都是使用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];
    }
}
问题是,对于所有选项按钮,我希望每个按钮都有一个唯一的编号-目前,我的十个选项中的每一个都返回带有标签1、2、3等的按钮,最多十个,而我需要第一个选项返回1-10,第二个选项返回11-20等,因为每个单独的按钮都会返回一些独特的内容

例如: 单击一个选项上标记为7的按钮将显示与单击另一个选项上标记为7的按钮完全不同的web视图,因此我需要区分每个按钮。


有人知道我如何设置标签,使每个选项都是唯一的(而不是像当前一样将当前所选选项的每个按钮设置为唯一的)?

只需使用另一个值为10倍的整数变量即可

int factor;
if(option 1)
{
   factor = 0;
}
if(option 2)
{
   factor = 10;
} 
etc..
然后把标签作为

[imageOne setTag:i+factor];

只需使用另一个值为10倍的整数变量

int factor;
if(option 1)
{
   factor = 0;
}
if(option 2)
{
   factor = 10;
} 
etc..
然后把标签作为

[imageOne setTag:i+factor];

如果我正确理解了你的问题,解决问题的一种方法是为每个选项设置一个基本标记,比如100、200、

因此,在您的
prepareForSegue
中:

int baseTag;

if(option 1) {
  // Array contains different values...
  baseTag = 100;
}

if(option 2) {
  // Array contains different values...
  baseTag = 200;
}

// etc...
在for循环中,简单地说:

[imageOne setTag: baseTag + i];

对于选项1,您的图像标签将从101开始,对于选项2,从201开始,等等。

如果我正确理解了您的问题,解决问题的一种方法是为每个选项设置一个基本标签,如100、200

因此,在您的
prepareForSegue
中:

int baseTag;

if(option 1) {
  // Array contains different values...
  baseTag = 100;
}

if(option 2) {
  // Array contains different values...
  baseTag = 200;
}

// etc...
在for循环中,简单地说:

[imageOne setTag: baseTag + i];

对于选项1,您的图像标签将从101开始,对于选项2,从201开始,等等。

我不确定是否有人理解您的问题。如果您想要一个唯一的值,那么在静态var+模上增加它。但我只能说错话,因为我不清楚你想要什么。您也可以使用枚举来区分不同类型的模式我不确定是否有人理解您的问题。如果您想要一个唯一的值,那么在静态var+模上增加它。但我只能说错话,因为我不清楚你想要什么。您也可以使用枚举来区分不同类型的模式