0

我想在我拥有的每九个插座(UIButton,称为 btn1、btn2、btn3 ... btn9)上循环一次,例如:

for(int i = 0; i < 9; i++) {
    [[btn(%@), i] setImage:someOne forState:UIControlStateNormal]; // I know that this is ridiculous, but it's just a way to demonstrate what I'm saying. :-)
}

任何提示?

非常感谢!

4

4 回答 4

2

您可能想查看IBOutletCollectionapple doc here),它允许您将多个按钮连接到同一个插座并像常规一样访问它们NSArray

于 2012-05-11T03:55:14.010 回答
1

让您想要循环的所有出口在单独的视图上循环。

for(int subviewIter=0;subviewIter<[view.subviews count];subviewIter++)
{
    UIbutton *button = (UIbutton*)[view.subviews objectAtIndex:subviewIter];
    // Do something with button.
}
于 2012-05-11T03:58:09.157 回答
0

在创建UIButton时,您可以设置按钮的标签属性。现在可以通过多种方式访问​​该按钮,例如 -

NSArray *subViews = self.view.subviews;
for (int index = 0; index < [subViews count]; index++) {
    if ([subViews objectAtIndex:index] isKindOfClass:[UIButton Class]) {
    //Button is accessible now, Check for tag and set image accordingly.
    }
}
于 2012-05-11T03:59:00.117 回答
0

如果您想这样做,您应该考虑聚集所有 UIView 实例或在您的情况下:按钮。我建议您将所有按钮添加到数组或任何其他有助于您管理对象的数据格式中。

如果您想在不使用外部对象的情况下这样做,我建议您将所有按钮添加到超级视图,然后,您将能够使用:mySuperview.subviews 属性遍历超级视图的子视图。

您还可以在初始化后立即为每个按钮(标签)提供一个唯一的 ID 号,然后您可以使用给定的标签访问该按钮:

myButton.tag = 1;
//Access the button using:
UIButton *b = (UIButton *) [superview viewWithTag:1];
于 2012-05-11T04:03:37.617 回答