3

それ自体がuiscrollviewにあるuiviewでボタンを作成、追加、タグ付けするコードがあります。ある時点で、特定のタグが付いたボタンの一部を変更しようとします(背景色と画像)。問題は、タグ0の最初のボタンを選択した場合、uiscrollviewまたはuiviewのいずれにもそのメソッドが使用できないため、画像変更のためにforループ爆弾が出力されます。しかし、私はビュー内のボタンを外すだけをターゲットにしようとしています(すべて同期されています)。他のボタンを選択すると、期待どおりに機能します。代わりにタグを0から1にオフセットすることもできますが、forループが機能しない理由を知りたいです。

for (int i=0; i<[devicesArray count]; i++) {
    NSLog(@"red %i", i);

    for (UIView *subview in [uiv_ButtonsView subviews]) {
        if([subview isKindOfClass:[UIButton class]]) {
            int number = [[devicesArray objectAtIndex:i] intValue];
            subview.alpha=1.0;
            [[subview viewWithTag:number] setBackgroundColor:[UIColor redColor]];
            UIButton *btttn = (UIButton *)[subview viewWithTag:number];
            [btttn setBackgroundImage:nil forState:UIControlStateNormal];
        }
    }
}

ありがとう-これは現在機能しているコードです:

for (int i=0; i<[devicesArray count]; i++) {
    int number = [[devicesArray objectAtIndex:i] intValue];
    [[uiv_Quilt viewWithTag:number] setBackgroundColor:[UIColor redColor]];
    [[uiv_Quilt viewWithTag:number] setBackgroundImage:nil forState:UIControlStateNormal];
}
4

2 に答える 2

6
for (UIView *subview in [uiv_ButtonsView subviews]) {

subViewuiv_ButtonsViewのサブビューです

if([subview isKindOfClass:[UIButton class]]) {

subViewUIButton

[[subview viewWithTag:number] setBackgroundColor:[UIColor redColor]]; 

うーん。これで、タグ0のUIButtonのサブビューが表示されます。これは、すべてのビューのデフォルトのタグです。ここではUIButtonのプライベートビュー階層にいますが、これが何であるかはわかりません。

UIButton *btttn = (UIButton *)[subview viewWithTag:number]; 

繰り返しますが、この呼び出しからボタンが返されることをコンパイラーに通知しましたが、返されません。subViewはすでにボタンです。ボタンには、サブビューとして他のボタンはありません。

[btttn setBackgroundImage:nil forState:UIControlStateNormal];

したがって、このコード行は機能しません。

ですべての操作を行うのか、ボタンを取得するためにsubView使用するのかわかりません。[uiv_ButtonsView viewWithTag:xx]後者の場合、すべてのビューのデフォルトのタグは0であるため、タグを1から開始する必要があります。

于 2012-05-14T12:39:03.163 に答える
1

[subview viewWithTag:number]私には意味がありません(ボタン、サブビュー、おそらくそれ以上のサブビューはありません)。また、 uiv_ButtonsView を介したネストされた反復を使用して devicesArray を反復することも意味がありません。タグを使用している場合は、uiv_ButtonsView のサブビューを反復処理する必要はありませんが、[uiv_ButtonsView viewWithTag:number].

于 2012-05-14T12:54:13.453 に答える