1

私のクイズアプリでは、アクティブなイメージと非アクティブなイメージを設定して、4 つの回答に対して 4 つのカスタム ラジオ ボタンを作成しています。ボタンを選択すると状態がアクティブに変わりますが、前のボタンを押すと状態が非アクティブになります。

カスタム ボタンを作成するためのコード

    //answer 1
    targetLabel = [[UILabel alloc] init];
    CGSize labelSize = CGSizeMake(240, 9999);
    CGSize theStringSize = [ans1 sizeWithFont:targetLabel.font          constrainedToSize:labelSize lineBreakMode:targetLabel.lineBreakMode];
    targetLabel.frame = CGRectMake(targetLabel0.frame.origin.x+40, targetLabel0.frame.size.height+40, theStringSize.width, theStringSize.height);
    targetLabel.text = ans1;
    [targetLabel setNumberOfLines:0];
    targetLabel.backgroundColor=[UIColor clearColor];
    [targetLabel sizeToFit];
    [scroll addSubview:targetLabel];
    // button 1
 ans1btn = [[UIButton alloc] initWithFrame:CGRectMake(15,targetLabel.frame.origin.y-5,30,30)];
    ans1btn.backgroundColor=[UIColor redColor];
     [ans1btn setSelected:NO];
    [ans1btn setBackgroundImage:[UIImage imageNamed:@"gray.png"]
                       forState:UIControlStateNormal];
    [ans1btn setBackgroundImage:[UIImage imageNamed:@"green.png"]
                       forState:UIControlStateSelected];
    ans1btn.adjustsImageWhenHighlighted=YES;
    [ans1btn addTarget:self
                action:@selector(checkboxSelected:)
      forControlEvents:UIControlEventTouchUpInside];
    ans1btn.tag=1;
    [scroll addSubview:ans1btn];

呼び出し方法

-(void)checkboxSelected:(id)sender
{
checkBoxSelected = TRUE;
[ans1btn setSelected:checkBoxSelected];
if(checkBoxSelected==TRUE)
{
    checkBoxSelected1=FALSE;
    [ans1btn1 setSelected:checkBoxSelected1];
    [ans1btn2 setSelected:checkBoxSelected1];
    [ans1btn3 setSelected:checkBoxSelected1];
    checkBoxSelected=TRUE;
    targetLabel.textColor=[UIColor blackColor];
    targetLabel1.textColor=[UIColor grayColor];
    targetLabel2.textColor=[UIColor grayColor];
    targetLabel3.textColor=[UIColor grayColor];
}
else
{
    NSLog(@"the button is not selected");
}
}

そのように、他のボタンアクションも呼び出しています

誰でも私を助けてください。

前もって感謝します。

4

2 に答える 2

1

このようにしてみてください。ここで1つのボタンをグローバルに定義し、そのボタンで遊んでください。タグやその他すべてのものを取得する必要はありません

@property(nonatomic,retain)UIButton *previousSelectedBtn;

- (IBAction)radioButtonSelection:(UIButton *)sender {
    sender.selected=YES;
    if(_previousSelectedBtn)
        _previousSelectedBtn.selected=NO;
    _previousSelectedBtn=sender;

}
于 2013-06-10T09:07:48.817 に答える