【问题标题】:Differentiating between dynamically generated buttons区分动态生成的按钮
【发布时间】:2013-03-05 16:10:05
【问题描述】:

我在视图控制器上有十个选项,每个选项都“推送”到同一个新视图控制器,显示特定数量的按钮(对于每个选项,可能有不同数量的按钮可用,从 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 的按钮将带来与单击另一个选项上标记为 7 的按钮完全不同的 Web 视图,因此我需要区分每个按钮。

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

【问题讨论】:

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

标签: iphone ios objective-c arrays cocoa-touch


【解决方案1】:

只需使用另一个整数变量,它的值是 10 的倍数。

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

然后把标签写成,

[imageOne setTag:i+factor];

【讨论】:

    【解决方案2】:

    如果我正确理解了您的问题,解决问题的一种方法是为每个选项设置一个基本标记,例如 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 开始,等等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-02
      • 2011-05-13
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多