2012-10-28 57 views
0

我有一个带有多个视图的xib文件。他们的IBOutlet s被命名为view1view2,view3等等,我想在循环中访问它们。在Objective-C中可以这样做吗?如何通过生成的实例名称访问对象?

我知道在ActionScript中你可以生成一个像这样的对象的名字:["view"+num]

回答

1

使用键值编码。如果说假设我有view1 .. view 10,那么我会这样使用它;

for(int i=0 i< 10; i++){ 
    UIView *eachView = [self valueForKey:[NSString stringWithFormat:@"view%d", i]]; 
} 

我希望它适合你。

+0

这工作得很好。我也会提出这个建议。 –

+0

太棒了!它工作:))非常感谢! –

2

而不是命名它们,将它们分配标签(0 ... 10),然后您可以使用viewWithTag:将它们拉出父视图。

3

将它们放在IBOutletCollection中。这是一个数组,您可以在界面构建器中填充它并遍历它。

0

另一种可以完成此操作的方法是使用NSDictionaryOfVariableBindings

NSArray *views = [NSDictionaryOfVariableBindings(view1, view2, view3) allObjects]; 
for (UIView *item in views) 
    do something with item;