0

正如问题所问的那样,我想知道是否有可能通过 for 循环的 int 更改属性。

例子:

控制器.h:

 @property (weak, nonatomic) IBOutlet UILabel *lblTeamName1;
 @property (weak, nonatomic) IBOutlet UILabel *lblTeamName2;
 @property (weak, nonatomic) IBOutlet UILabel *lblTeamName3;

控制器.m

 @synthesize property lblTeamName1;
 @synthesize property lblTeamName2;
 @synthesize property lblTeamName3;     

 for(int i = 0;i <= 3;i++)
 {
  lblTeamName(i).text = @"something";
 }

我要问的是一种可行的方法,我不知道这是否可行或无法完成。

4

2 回答 2

2

您可以将属性放在一个NSMutableArray和循环中。

NSMutableArray *arr = [[NSMutableArray alloc] init];
[arr addObject:lblTeamName1];
[arr addObject:lblTeamName2];
[arr addObject:lblTeamName3];

for(UILabel *label in arr) {
  label.text = @"something";
}

我不是 100% 确定,但我认为没有像 Java 反射这样的东西,您可以手动获取定义的属性并更改值。所以你必须使用一个额外的数组来获得这种行为。

于 2012-11-13T08:26:08.367 回答
0

你可以做这样的事情......

for (int i=1; i<4; i++) {
    UILabel *label = [self objectForKey:[NSString stringWithFormat:@"lblTeamName%i", i]];
    label.text = @"blah";
}

这将依赖于标签的标准命名约定。

哦,还有,只是一个注释。您不再需要输入@synthesize。如果您使用的是 Xcode 4.5,那么他们不再需要使用 @synthesize。如果它被忽略,编译器会推断它。

于 2012-11-13T08:29:09.873 回答