0

oldTag ボタンが白に戻らない?? 私は何が欠けていますか?

どうも

-(void) myCharValue: (UIButton*)btn
{

    [btn setBackgroundColor:[UIColor redColor]]; //current tag_button pressed

    UIButton *btnTemp;
    btnTemp = (UIButton*)[btnChar viewWithTag:oldTag];
    [btnTemp setBackgroundColor:[UIColor whiteColor]]; // <--- oldTag button is not changing back to white ??

    oldTag = btn.tag;
}


//setup
for (int i=0; i<16; i++) {
        for (int j=0; j<16; j++) {
            btnChar = [UIButton buttonWithType:UIButtonTypeCustom ];
            [btnChar setFrame:CGRectMake(j*40+1, i*40+1, 38, 38)];
            [btnChar setBackgroundColor:[UIColor whiteColor]];
            [btnChar setTitle:[NSString stringWithFormat:@"%c", k]  forState:UIControlStateNormal ];
            [btnChar setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
            [btnChar addTarget:self action:@selector(myCharValue:) forControlEvents:UIControlEventTouchUpInside];
            [btnChar setTag:k];
            [svDisplay addSubview:btnChar];
            k++;
        }
    }
4

2 に答える 2

2

プロパティのデフォルト値が 0 であることを追加したいだけtagなので、ループを 0 で開始すると、最初のボタンは技術的にタグ付けされません。後で(@jrtc27 の回答を参照)viewWithTag:から 0を要求すると、その配列の最初のビューが取得されます。svDisplay[svDisplay subviews]

于 2012-05-06T09:03:54.227 に答える
1

svDisplayボタンはではなくのサブビューなbtnCharので、行btnTemp = (UIButton*)[btnChar viewWithTag:oldTag];は である必要がありますbtnTemp = (UIButton*)[svDisplay viewWithTag:oldTag];

于 2012-05-06T08:50:20.690 に答える