0

私が持っている 9 つのアウトレット (btn1、btn2、btn3... btn9 と呼ばれる UIButton) ごとにループを実行したい:

for(int i = 0; i < 9; i++) {
    [[btn(%@), i] setImage:someOne forState:UIControlStateNormal]; // I know that this is ridiculous, but it's just a way to demonstrate what I'm saying. :-)
}

ヒントはありますか?

どうもありがとう!

4

4 に答える 4

2

複数のボタンを同じコンセントに接続して、通常のようにアクセスできるようにするIBOutletCollection( apple doc here )をチェックアウトすることをお勧めしますNSArray

于 2012-05-11T03:55:14.010 に答える
1

ループさせたいすべてのアウトレットを別のビューでループさせます。

for(int subviewIter=0;subviewIter<[view.subviews count];subviewIter++)
{
    UIbutton *button = (UIbutton*)[view.subviews objectAtIndex:subviewIter];
    // Do something with button.
}
于 2012-05-11T03:58:09.157 に答える
0

それを実行したい場合は、すべてのUIViewインスタンス、または場合によってはボタンを集約するものを検討する必要があります。オブジェクトの管理に役立つ配列またはその他の種類のデータ形式にすべてのボタンを追加することをお勧めします。

その目的で外部オブジェクトを使用せずにそれを実行したい場合は、すべてのボタンをスーパービューに追加してから、mySuperview.subviewsプロパティを使用してスーパービューのサブビューを反復処理できるようにすることをお勧めします。

また、初期化した直後に各ボタン(タグ)に一意のID番号を付けることもできます。その後、指定されたタグを使用してボタンにアクセスできます。

myButton.tag = 1;
//Access the button using:
UIButton *b = (UIButton *) [superview viewWithTag:1];
于 2012-05-11T04:03:37.617 に答える
0

の作成UIButton時に、ボタンのタグ プロパティを設定できます。現在、そのボタンにアクセスするにはいくつかの方法があります。

NSArray *subViews = self.view.subviews;
for (int index = 0; index < [subViews count]; index++) {
    if ([subViews objectAtIndex:index] isKindOfClass:[UIButton Class]) {
    //Button is accessible now, Check for tag and set image accordingly.
    }
}
于 2012-05-11T03:59:00.117 に答える