web-dev-qa-db-ja.com

IOSの最適なラジオボタン実装

IPhoneアプリにラジオボタンオプションを実装する方法の例はありますか。

簡単な選択機能には、ピッカービューが非常に大きいと思います。

Apple意図的にラジオボタンを除外したかどうか、および使いやすさ/ユーザーエクスペリエンスの観点からピッカービューを単に使用するほうが良いかどうかはわかりません。

45
Jonas Arcangel

最適なラジオボタンの実装がどのように見えるかについて、いくつかの考えがあります。 UIButtonクラスに基づいて、「選択済み」状態を使用してグループからの1つを示すことができます。 UIButtonにはIBのネイティブカスタマイズオプションがあるため、XIBを設計するのに便利です。また、IBコンセント接続を使用してボタンをグループ化する簡単な方法が必要です。

これを RadioButton クラスに実装しました。チャームのように機能します:

サンプルプロジェクトをダウンロード

41
onegray

ISegmentedControl を試してください。ラジオボタンと同様に動作し、選択肢の配列を提示し、ユーザーが1を選択できるようにします。

24
jlstrecker

まとめると、4つの方法があります。

  • 十分なスペースがない場合は、テキストまたはボタンのクリックイベントを追加し、UIPickerViewを表示します。

UIPickerView

または、チェックマークの付いた新しいテーブルビューコントロールを開きます。

UITableView

  • さらにスペースがある場合は、メインビューにテーブルビューを直接追加します。

enter image description here

  • 最終的な解決策は、UISegmentedControlを使用することです。

enter image description here

お役に立てれば。

18
thanhbinh84

オプション画面では、特に複数のラジオグループがある場合、グループ化されたテーブルビューを使用します。各グループは無線グループであり、各セルはグループ内の選択肢です。セルのアクセサリビューを使用して、必要なオプションを示すチェックマークを表示するのは簡単です。

UIPickerViewのみを少し小さくしたり、2つのページを2つ並べるのにグラデーションが少し適している場合は...

7
Adam Eberbach

DLRadioButton を試してください。SwiftObjCの両方で機能します。画像を使用して、選択状態を示したり、独自のスタイルをカスタマイズしたりすることもできます。

GitHub で確認してください。

radio button for iOS

**更新:選択インジケータを右側に配置するオプションが追加されました。

**更新:正方形ボタンIBDesignableが追加され、パフォーマンスが向上しました。

**更新:複数選択のサポートが追加されました。

7
David Liu

私はこれに答えるのが非常に遅いことを知っていますが、これが誰にも役立つことを願っています。

IBOutletCollectionを使用してラジオボタンのようなボタンを作成できます。 .hファイルにIBOutletCollectionプロパティを1つ作成します。

@property (nonatomic, strong) IBOutletCollection(UIButton) NSArray *ButtonArray;

すべてのボタンをこのIBOutletCollectionに接続し、3つのボタンすべてに対して1つのIBActionメソッドを作成します。

- (IBAction)btnTapped:(id)sender {
       for ( int i=0; i < [self.ButtonArray count]; i++) {
           [[self.ButtonArray objectAtIndex:i] setImage:[UIImage                         
            imageNamed:@"radio-off.png"]                 
            forState:UIControlStateNormal];
       }
     [sender setImage:[UIImage imageNamed:@"radio-on.png"]
      forState:UIControlStateNormal];
}
6
riddhi

ラジオボタンの配列の背後にあるロジックを処理するためのコントローラーを作成しました。オープンソースであり、GitHubでチェックしてください!

https://github.com/goosoftware/GSRadioButtonSetController

5
Simon Whitaker
-(void)radiobutton:(id)sender
{
ischecked =!ischecked;
UIButton *check = (UIButton*)sender;
if(ischecked == NO)
    [check setImage:[UIImage imageNamed:@"checkbox1.png"] forState:UIControlStateNormal];
else 
    [check setImage:[UIImage imageNamed:@"checkbox-pressed.png"] forState:UIControlStateNormal];
}
0
Sakshi Singla

IOSアプリでラジオボタンを作成する次の簡単な方法は、2つの手順に従います。

ステップ1-viewDidLoadまたは他の目的のメソッドにこのコードを配置します

 [_mrRadio setSelected:YES];
        [_mrRadio setTag:1];
        [_msRadio setTag:1];
        [_mrRadio setBackgroundImage:[UIImage imageNamed:@"radiodselect_white.png"] forState:UIControlStateNormal];
        [_mrRadio setBackgroundImage:[UIImage imageNamed:@"radioselect_white.png"] forState:UIControlStateSelected];
        [_mrRadio addTarget:self action:@selector(radioButtonSelected:) forControlEvents:UIControlEventTouchUpInside];

        [_msRadio setBackgroundImage:[UIImage imageNamed:@"radiodselect_white.png"] forState:UIControlStateNormal];
        [_msRadio setBackgroundImage:[UIImage imageNamed:@"radioselect_white.png"] forState:UIControlStateSelected];
        [_msRadio addTarget:self action:@selector(radioButtonSelected:) forControlEvents:UIControlEventTouchUpInside];

ステップ2-次のIBActionメソッドをクラスに入れます

-(void)radioButtonSelected:(id)sender
{
    switch ([sender tag ]) {
        case 1:
            if ([_mrRadio isSelected]==YES) {
              //  [_mrRadio setSelected:NO];
               // [_msRadio setSelected:YES];
               genderType = @"1";
            }
            else
            {
                [_mrRadio setSelected:YES];
                [_msRadio setSelected:NO];
                genderType = @"1";
            }
            break;
        case 2:
            if ([_msRadio isSelected]==YES) {
               // [_msRadio setSelected:NO];
               // [_mrRadio setSelected:YES];
                genderType = @"2";
            }
            else
            {
                [_msRadio setSelected:YES];
                [_mrRadio setSelected:NO];
                 genderType = @"2";
            }
            break;
        default:
            break;
    }
}