我有一个变量名称引用了Objective C guru的问题。
假设我在表单上有6个UILabel,设置的属性命名为myLabel1 - myLabel6
我想通过for循环并根据循环填充这些东西,但我不确定如何指定for循环变量并使其成为标签名称的一部分。
以下是我想做的事情:
for (int LP = 0; i <5)
{
labelLP.text = [NSString stringWithFormat:@"My label number:%d", LP};
}
我不确定如何引用标签并附加LP int并在我的循环中使用它。我确定有办法做到这一点,不知道如何......任何人?
答案 0 :(得分:5)
你总是可以利用objective-c的动态运行时:
id var = object_getIvar(self,class_getInstanceVariable([self class], [[NSString stringWithFormat:@"label%d",LP] UTF8String]));
答案 1 :(得分:2)
是否喜欢这种方法是一种风格问题,但这是一种应该有效的方法:
for (int LP = 1; i <=6)
{
NSString *labelName = [NSString stringWithFormat: @"label%d", i];
UILabel *labelLP = (UILabel*)[self valueForKey: labelName];
labelLP.text = [NSString stringWithFormat:@"My label number:%d", LP};
}
答案 2 :(得分:1)
我不认为你可以动态创建变量名,至少不是那么简单。
你总是可以在你的循环中使用一个开关盒:
for (int i=0; i<5; i++) {
switch(i) {
case 1:
myLabel1.text = [NSString stringWithFormat:@"My label number: %d", i];
break;
case 2:
myLabel2.text = [NSString stringWithFormat:@"My label number: %d", i];
break;
...
...
}
}
您还可以将标签存储在数组中,然后遍历该数组。
重点不是要注意变量名称,而是要考虑为什么需要你的对象以及如何获取它们。