iphone - 区分动态生成的按钮

标签 iphone ios objective-c arrays cocoa-touch

我在 View Controller 上有十个选项,每个选项都“推送”到同一个显示特定数量按钮的新 View Controller (对于每个选项,可能有不同数量的按钮可用,从 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 等的按钮到 10,而我需要第一个选项返回 1-10,第二个选项返回 11-20 等等,因为每个单独的按钮都会返回一些独特的东西。

例如:

在一个选项上单击标签为 7 的按钮将显示与在另一个选项上单击标签为 7 的按钮完全不同的 Web View ,因此我需要区分每个按钮。

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

最佳答案

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

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/

相关文章:

ios - 增加 UIScrollView 橡皮筋阻力

iphone - 选择单元格时如何设置 accessoryType

ios - 如何以编程方式为非 ARC xcode 项目中的特定文件启用 ARC?

iphone - 按属性(数字)对实体进行排序,负数后等于 0

ios - AlertView 暂停代码

ios - UIApplicationDelegate 但对于每个 ViewController

iphone - 如何在 iPad 上以 "Form sheet"模式的宽度显示 html 页面而不对页面宽度进行硬编码?

iphone - 此时如何识别oneTap/doubleTap?

ios - APNS 向所有用户的设备发送通知

ios - setvalue :forkey: not working, 应用程序崩溃