0

For the iPhone, I havent been able to find anything like a radio button that triggers the other buttons in a group. So what would everyone suggest using? UISwitch I guess and do something to trigger the others in the group when an other is selected?

If I had several UISwitch objects how would I trigger the others to be the opposite of what I switched?

4

5 に答える 5

4

私はあなたが求めていることを達成する方法を正確に示すプロジェクトを作成しました。グラフィックをチェックボックス(デバイスで見たり理解したりするのが少し良いと思います)からラジオボタンに変更できます。

デバッグログを読んで、ロジックを理解してください。

ご不明な点がございましたら、お気軽にお問い合わせください。

ラジオボタンのサンプルプロジェクト(XCode4)

[これは以下のコメントへの返信です]

于 2011-05-23T19:22:23.667 に答える
4

ラジオボタンのように機能する画像付きのボタンを使用します。つまり、オフ イメージとオン イメージです。このアプローチの良いところは、実装が非常に簡単で、画像を使用してボタン コントロールの状態を制御できることです。シンプルなトグルとして機能し、凝ったボタンの状態は必要ありません。ボタンがオンまたはオフのときに何かを実行するコードをメソッドに簡単に追加できます。この例では、いくつかのユーザー デフォルトを書き込むメソッドを呼び出すだけです。

ラジオボタン機能を作成するのは非常に簡単です。

 -(IBAction)tickboxControl:(id)sender{  
      NSLog(@"%s",__FUNCTION__);  
      bgImageOn = [UIImage imageNamed:@"tickedBox.png"];  
      bgImageOff = [UIImage imageNamed:@"tickBoxEmpty.png"];  
      UIButton *buttonClicked = (UIButton *)sender;  
   UIImage *imageOfClicked = [buttonClicked imageForState:UIControlStateNormal];  
      if (imageOfClicked == bgImageOff) {  
           [self setButtonFlags: [NSNumber numberWithInt:[sender tag]] : [NSNumber numberWithInt:1] ];  
           [buttonClicked setImage:bgImageOn forState:UIControlStateNormal];  
      } else{  
           [self setButtonFlags: [NSNumber numberWithInt:[sender tag]] : [NSNumber numberWithInt:0] ];  
           [buttonClicked setImage:bgImageOff forState:UIControlStateNormal];  
      }       
 }
于 2011-05-22T22:55:22.983 に答える
3

カスタム UISegmentedControl も使用しました。このようなもの:

NSMutableArray* buttons;

- (void)touchDownAction:(UIButton*)button {
    [self dimAllButtonsExcept:button];
    if ([delegate respondsToSelector:@selector(touchDownAtSegmentIndex:)])
        [delegate touchDownAtSegmentIndex:[buttons indexOfObject:button]];
}

-(void) dimAllButtonsExcept:(UIButton*)selectedButton {
    for (UIButton* button in buttons) {
        if (button == selectedButton) {
            button.selected = YES;
            button.highlighted = YES;
        } else {
            button.selected = NO;
            button.highlighted = NO;
        }
    }
}

完全なコードはhttps://github.com/j4n0/jobsket/tree/master/sources/main/ui/custom/segControlにあります

于 2011-05-22T22:24:49.550 に答える
2

Try this for a radio button in iOS:

@interface RadioButtonViewController : UIViewController

{
    //for radio button
    IBOutlet UIButton *radioButton1;
    IBOutlet UIButton *radioButton2;
    IBOutlet UITextField *selectedValue;
    IBOutlet UILabel *label1;
    IBOutlet UILabel *label2;
   }

@property (nonatomic,retain) IBOutlet UIButton *radioButton1;
@property (nonatomic,retain) IBOutlet UIButton *radioButton2;
@property (nonatomic,retain) IBOutlet UITextField *selectedValue;
-(IBAction)userChangedButtonClicked:(id)sender
@end

Write code in .m file and specify the default and selected image in storyboard inspector window and give the tag value each button.

RadioButtonViewController.m

-(IBAction)userChangedButtonClicked:(id)sender
{
    UIButton *senderBtn = (UIButton*)sender;
    if (senderBtn.tag == 101 && !self.radioButton1.selected)
    {
       self.radioButton1.selected = TRUE;
        self.radioButton2.selected = FALSE;
      selectedValue.text = label1.text;
    }else if (senderBtn.tag == 102 && !self.radioButton2.selected)
    {
        self.radioButton1.selected = FALSE;
        self.radioButton2.selected = TRUE;
       selectedValue.text = label2.text;
    }
}
于 2014-08-02T13:14:46.033 に答える
2

UISegmentedControl をラジオ ボタンとして使用しました。

于 2011-05-22T21:56:14.837 に答える