2009-06-03 46 views
3

我想要做的是理想地循环遍历UIView中的所有按钮(我有很多,超过40个按钮),并根据标记更改按钮的图像显示。有谁知道我该怎么做?访问iPhone上的UIView中的每个按钮

谢谢!

+0

@stefan:伪?真?! – Forer 2010-12-08 13:38:14

回答

1

使用包含按钮的UIView的子视图属性。对于NSArray中的每个UIView元素,请检查标记属性。如果标签符合您的逻辑需求,请更改该UIView实例中显示的图像 - 在本例中为其中一个按钮。

+0

非常感谢! – 2009-08-07 01:05:32

11

我会说使用subviews属性,devilaether说,但做一个额外的检查,以确保子视图是一个UIButton你做任何事情之前与它:

for(UIView *view in [rootView subviews]) { 
    if([view isKindOfClass:[UIButton class]]) { 
     if([view tag] == 0) { 
      // First image 
     } /* ... */ 
     else { 
      NSLog(@"didn't recognize tag"); 
     } 
    } else { 
     NSLog(@"view is not a button"); 
    } 
}

你也可以让你的生活如果你用你想迭代的UIButton来存储一个NSArray,那么更容易;这将取出isKindOfClass:检查。有关更多信息,请参阅NSObject protocol

+0

这可以工作,但NSLog需要字符串之前的@。 @“没有识别标签”。否则代码将不会生成。试图编辑这个,但我不能编辑这些小改动。 – HotFudgeSunday 2012-06-21 19:03:16

0
for(i=0; i<numberOfTags; i++){ 
UIButton *tempBtn = [yourView viewWithTag:i]; 
[tempBtn setImage:yourImage]; 

}