2012-03-13 11 views
1

私がダウンして、これらの線をカットすることができ、トーンたい:36にボタンのプロパティをループで変更しますか? Xcodeの

[button0 addGestureRecognizer:longPress]; 
[button1 addGestureRecognizer:longPress]; 
[button2 addGestureRecognizer:longPress]; 
[button3 addGestureRecognizer:longPress]; 
[button4 addGestureRecognizer:longPress]; 
[button5 addGestureRecognizer:longPress]; 
[button6 addGestureRecognizer:longPress]; 
[button7 addGestureRecognizer:longPress]; 
[button8 addGestureRecognizer:longPress]; 
[button9 addGestureRecognizer:longPress]; 

など。すべての道を!

おそらくループがありますか?しかし、私はこれを行う方法がわかりません。

ありがとう、 よろしく。

+0

?インタフェースビルダーまたはコードで? – sch

+0

インターフェースビルダー –

答えて

6

各ボタンにタグを割り当てて、viewWithTagという方法でボタンをループすることができます。

for (int i = 0; i < 36; i++) { 
    UIButton *button = [self.view viewWithTag:i]; 
    UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)]; 
    [button addGestureRecognizer:longPress]; 
} 

次のスクリーンショットは、Interface Builderの各ボタンにタグを割り当てる場所を示しています。あなたは、ボタンのセットアップIBOutletsを持っている場合は、あなたがvalueForKey:を使用してそれらを取得し、タグのないことができ

enter image description here

:ボタンが作成されますどのように

for (int i = 0; i < 36; i++) { 
    NSString *key = [NSString stringWithFormat:@"button%d", i]; 
    UIButton *button = [self valueForKey:key]; 
    UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)]; 
    [button addGestureRecognizer:longPress]; 
} 
+0

ありがとう、房の男! –

+0

素晴らしいです、私はこれを私のコードに追加しました。それは美しく動作します!タグメソッドを使用するか、IBOutletsを使用する方が効率的ですか?プログラムを実行するという観点から言えば、コードを記述するのに時間がかかりません。 –

+0

どちらの方法を選択しても、アプリのパフォーマンスには影響しません。 – sch

2

ボタンを配列に入れ、高速列挙を使用してボタンを反復処理します。

NSArray *buttons = [NSArray arrayWithObjects:button0, button1, button2, button3, button4, button5, button6, button7, button8, button9, nil]; 

for (UIButton *button in buttons) { 
    [button addGestureRecognizer:longPress]; 
} 
+0

ありがとうございました。気にしない場合は別の質問があります。どのように複数のボタンが1つのジェスチャ認識機能を持っているのですか?これを行うと最後のものだけが機能するからです。 –

+0

ああ、それは良い点です。複数のビューに同じジェスチャ認識機能を追加することはできません。ループ内にジェスチャ認識ツールを作成して、各繰り返しで新しいインスタンスが作成されるようにする必要があります。ここの例をこの回答で見てください:http://stackoverflow.com/a/7883902/663476 – jonkroll

+0

リンクと助けてくれてありがとう! –

関連する問題