2

次のコードで生成された 6 つの UIButtons があります。

int count = 0;
    for (int i= 0; count<6; i++) {
        for (int j=0; j<1&&count<6; j++) {
            followbutn = [UIButton buttonWithType:UIButtonTypeCustom];
            followbutn.frame = CGRectMake(20, i*44+53, 280, 40);
            [followbutn setTitle:[followuparray objectAtIndex:count] forState:UIControlStateNormal];
            [followbutn addTarget:self action:@selector(followaction:) forControlEvents:UIControlEventTouchUpInside];
            [followbutn setImage:[UIImage imageNamed:@"checkbox_unchecked.png"] forState:UIControlStateNormal];

            followbutn.tag = count;
            [self.view addSubview:followbutn];
        }
        count++; 
    }

-(void)followaction:(id)sender
{
    UIButton *button = (UIButton *)sender;
    NSLog(@"%d",button.tag);

    [followbutn viewWithTag:button.tag];
    [followbutn setImage:[UIImage imageNamed:@"checkbox_checked.png"] forState:UIControlStateNormal];
}

ボタンをクリックするときは、その特定のボタンをチェックする必要があり、他のボタンはチェックしないでください。ボタンをクリックすると、最後のタグが付いたボタンのみがチェックインされます。

誰かが問題を特定できますか?

4

3 に答える 3

2

それで、基本的にあなたはチェックボックスを実装したいですか?のサブクラスを作成する必要がありますUIButton。次に、このコード行をUIViewControllerボタンのまたは他のコンテナに追加します。

[myButton addTarget:self action:@selector(selfTapped) forControlEvents:UIControlEventTouchDown];

次に、次のメソッドをコンテナに追加します。

-(void)selfTapped{
 //CustomButton is the UIButton Subclass
 for(CustomButton *but in buttonArray){
  if(but.checked){
    but.checked = NO;
    [but setImage:[UIImage imageNamed:@"unchecked.png"] forControlEvents:UIControlEventTouchDown];
  }else{
    but.checked = YES
    [but setImage:[UIImage imageNamed:@"checked.png"] forControlEvents:UIControlEventTouchDown];
  }
 }
}

ご不明な点がございましたらお知らせください。

チェックされているのはBOOLであり、この場合も、このメソッドはのサブクラス内にありUIButton、このコードの2つの画像は、の値に対応するチェックボックスとチェックボックスがオフになっている画像BOOLです。

編集:あなたのコメントに応えて上記の私の編集を見てください。

于 2012-08-18T04:10:04.323 に答える
0

あなたの質問を理解している限り、ボタンをラジオボタンとして機能させたいと思います。そのためには、ここでカウント変数を 1 つだけタグ付けするのとは異なり、各ボタンに一意のタグを付けます。そのタグを使用して、画像を変更してボタンをチェックし、他のボタンのタグを削除して、チェックしたものを受け入れます。他のボタンをチェックしたい場合は、タグの値を再度初期化します。

于 2012-08-18T04:58:20.343 に答える
0

あなたのコードでこれを使用してください....最大タグ値までこのループを実行してください....

-(void)followaction:(id)sender
{
    for (int i = 0; i < value; i++)
    {
        UIButton *button = (UIButton *)[button viewWithTag:i];
        [button setImage:[UIImage imageNamed:@"checkbox_unchecked.png"] forState:UIControlStateNormal];
    }

    UIButton *button = (UIButton *)sender;

    [button viewWithTag:button.tag];
    [button setImage:[UIImage imageNamed:@"checkbox_checked.png"] forState:UIControlStateNormal];
}
于 2012-08-18T05:19:34.073 に答える