2012-02-20 8 views
1

if以下のステートメントでは、ピース1の名前を動的にすることで、ピース1、ピース2、ピース5などの他のピースも確認できるようにする方法があります。動的にUIImageViewの名前を書く

私はそれを[@ "ピース%d"のように見えるようにしなければならないでしょう、私はちょうどiOSから始まっているので、これを書く正しい方法が何であるか分かりません。

for (int i = 0; i < 6; i++) { 

    if(CGRectContainsPoint([piece1 frame], location)){ 
     piece1.center = location; 
    } 
} 

答えて

1

このような何か:

for (int i = 0; i < 6; i++) { 
    // Create a selector to get the piece 
    NSString *selectorName = [NSString stringWithFormat:@"piece%d", i]; 
    SEL selector = NSSelectorFromString(selectorName); 
    UIView *peice = [self performSelector:selector]; 

    // Now do your test 
    if(CGRectContainsPoint([piece frame], location)){ 
     piece1.center = location; 
    } 
} 

キーのビットがそれに一致するオブジェクトを取得するには、セレクタとperformSelector:に文字列をオンにするNSSelectorFromStringです。

+0

ありがとう、非常に便利です。 –

0

まず彼らに を初期化するとき、この

for (int i = 0; i < 6; i++) { 

UIImageView *piece = (UIImageView *)[self.view viewWithTag:i] ; 

    if(CGRectContainsPoint([piece frame], location)){ 
     piece.center = location; 
    } 
} 

にあなたのコードを変更し、あなたのImageViewのにタグを追加するには、あなたのタグがループi値になります値と一致することを確認してください。

+0

少し微調整したいかもしれません。最初のタグはタグなしのすべてのビューのデフォルトタグである '0'です。 'viewWithTag:i + 100'を試して、あなたの作品100,101,102 ...;)にタグ付けしてください。 – deanWombourne

+0

情報に感謝しています。 – Shubhank

関連する問題