0

10 個のパン認識機能があり、クラス プロパティに割り当てたいと考えています。for()ループでプロパティ名の数値部分を増やすにはどうすればよいですか?

for (int i=0; i < [_myArray count]; i++)
{
    myClassInstance.recognizer = pangesture + i ?? // doesn't work of course. but how??
}
4

2 に答える 2

1

パンレコグナイザーが10個あり、クラスプロパティに割り当てたいと思います。for()ループでプロパティ名の数値部分を増やすにはどうすればよいですか?

あなたの質問を完全に理解するかどうかはわかりませんが、ループを使用して10個のオブジェクトに割り当てる名前が付けられた10個のジェスチャ認識機能があると仮定すると、それらの10個のジェスチャ認識機能を配列に配置しg1g10次に、現在のインデックスを使用して割り当てを行います。

NSArray *recognizers = @[g1, g2, g3, g4, g5, g6, g7, g8, g9, g10];
if ([recognizers count < [_myArray count]) {
    NSLog("Houston, we have a problem! Not enough gesture recognizers to go around.");
}
for (int i=0; i < [_myArray count]; i++)
{
    myClassInstance.recognizer = recognizers[i]; // note the fancy "new" array access syntax!
}

ジェスチャレコグナイザーを個別に割り当てていない場合は、ループを介して毎回ジェスチャレコグナイザーを作成できます。

for (MyClass *instance in _myArray) {
    instance.recognizer = [[UIGestureRecognizer alloc] init...];
}
于 2012-11-05T21:12:16.957 に答える
1

それは素晴らしい形ではありません — 可能な限りカレブのコメントに従ってください — しかし、もしあなたが本当に追い詰められているなら:

for(int i = 0; i < [_myArray count]; i++)
{
    NSString *nameOfProperty = [NSString stringWithFormat:@"pangesture%d", i];
    UIPanGestureRecognizer *recogniser = [self valueForKey:nameOfProperty];
}

それはキー値コーディングを使用しています。IBOutlets は必ず KVC に準拠しているか、NIB をロードする方法がありません。

于 2012-11-05T21:47:57.677 に答える