0

質問が尋ねたように、プロパティのトラフを for ループの int に変更する可能性があるかどうかを知りたいです。

例:

controller.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 に答える