遍布所有商店

时间:2012-05-11 03:48:05

标签: objective-c loops outlet

我想在我拥有的每九个网点(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 个答案:

答案 0 :(得分:2)

您可能需要查看IBOutletCollectionapple doc here),这样您就可以将多个按钮连接到同一个插座,并像常规NSArray那样访问它们。

答案 1 :(得分:1)

让你想要循环的所有出口在一个单独的视图中循环。

for(int subviewIter=0;subviewIter<[view.subviews count];subviewIter++)
{
    UIbutton *button = (UIbutton*)[view.subviews objectAtIndex:subviewIter];
    // Do something with button.
}

答案 2 :(得分:0)

创建UIButton时,可以设置按钮的tag属性。现在有几种方法可以访问该按钮,例如一个 -

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.
    }
}

答案 3 :(得分:0)

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

如果您不想为此目的使用外部对象,我建议您将所有按钮添加到superview,然后,您将能够使用以下命令迭代superview的子视图:mySuperview.subviews属性。

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

myButton.tag = 1;
//Access the button using:
UIButton *b = (UIButton *) [superview viewWithTag:1];