我有一堆名为的按钮:
button1
button2
button3
etc.
有没有办法基本上这样做?
pseudocode
for(int i = 1, i < 15, i++) {
button{i}.selected = YES;
}
这也适用于方法调用等。我经常认为这种调用方法的方式非常方便,但我认为在使用编译语言时我从未见过它。但我使用PHP完成了它。
在Objective-C中有没有办法做到这一点? (这就是我现在的问题所在,但如果你能用其他语言做到这一点,我也会感兴趣。)或者,有没有理由说这不是一个访问所有UI元素的好方法?
谢谢!
答案 0 :(得分:2)
在目标C中,您可以将元素放在NSArray中,更常见的是对于任何语言,将要迭代的元素放在集合中。
如果您真的想用动态名称做可爱的事情,请使用NSDictionary并通过字符串名称查找;这几乎就是PHP用它的$$ foo语法做的事情。
#import <Foundation/Foundation.h>
int
main()
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
id button1 = @"this is button 1";// not actually buttons, but same principle
id button2 = @"this is button 2";
id button3 = @"this is button 3";
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
button1, @"button1",
button2, @"button2",
button3, @"button3"];
int i;
for (i = 1; i <= 3; ++i) {
// you can send messages to these objects instead of NSLogging them
NSLog([dict objectForKey: [NSString stringWithFormat:@"button%d", i]]);
}
}