查看以下代码:
@property (weak, nonatomic) UILabel *l112;
@property (weak, nonatomic) UILabel *l212:
@property (weak, nonatomic) UILabel *l312:
((RBScorecardVC *)self.presentingViewController).l112.text = @"Hello"
((RBScorecardVC *)self.presentingViewController).l212.text = @"Hello"
((RBScorecardVC *)self.presentingViewController).l312.text = @"Hello"
请注意我如何将标签的所有文本设置为“Hello”。必须有一种更有效的方法来做到这一点。我希望我能以某种方式访问 UIlabels 的名称(l112、1212 等)来做到这一点。这有意义吗?在我的实际应用程序中,我并没有真正将所有内容都设置为“Hello”,而是文本是计算的结果。此外,在我的实际应用程序中,我要设置超过 3 个标签(有 50 多个)这是我的实际代码,它使用重复的 if 语句单独访问每个 UILabel:
-(IBAction) submitScore: (id)sender
{
self.stringID = ((RBScorecardVC *)self.presentingViewController).self.giveString;
if (self.stringID isEqualToString:@"l112")
{ ((RBScorecardVC *)self.presentingViewController).l112.text = [[NSString alloc]initWithFormat:@"%d", self.accumulator];} //l112 is the name of my UILabel
else if (self.stringID is EqualToString:@"l212")
{ ((RBScorecardVC *)self.presentingViewController).l212.text = [[NSString alloc]initWithFormat:@"%d", self.accumulator];} //l212 is the name of my UILabel
}
我希望能够像这样更有效地做到这一点:
-(IBAction) submitScore: (id)sender
self.stringID = ((RBScorecardVC *)self.presentingViewController).self.giveString;
((RBScorecardVC *)self.presentingViewController).[UILabel withTitle:@"%@",stringID].text = [[NSString alloc]initWithFormat:@"%d", self.accumulator];}
注意我在点符号中使用的 [UILabel withTitle: @"%@", stringID] 部分。我知道这不起作用,但我想知道如何正确编写它,以便可以使用 stringID 访问我需要的 UILabel 的名称?