我在 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/