次のコードを確認してください。
@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など)にアクセスできることを望んでいます。これは意味がありますか?私の実際のアプリでは、すべてを「こんにちは」に設定しているわけではありませんが、代わりにテキストは計算の結果です。また、実際のアプリでは、設定するラベルが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の名前にアクセスできるように、これを正しく書き込むにはどうすればよいでしょうか。