IOS的最佳单选按钮实现

我想询问是否有关于如何在iPhone应用程序上实现单选按钮选项的示例。 我发现Picker View非常适合简单的选择功能。 我不确定Apple是否故意排除了单选按钮,以及是否更好地从可用性/用户体验的角度简单地使用Picker View。     
已邀请:
我对最佳单选按钮实现应该是什么样子有一些想法。它可以基于
UIButton
类,并使用它的“选定”状态来指示组中的一个。
UIButton
在IB中具有本机定制选项,因此设计XIB很方便。 还应该有一种使用IB插座连接分组按钮的简单方法: 我在这个RadioButton课程中实现了我的想法。奇迹般有效: 下载示例项目。     
试试UISegmentedControl。它的行为类似于单选按钮 - 提供一系列选项,让用户选择1。     
只想总结一下,可能有4种方法。 如果没有太多空间,请为文本或按钮添加单击事件,然后显示UIPickerView:   或者使用复选标记打开一个新的表格视图控件: 如果有更多空间,请将表格视图直接添加到主视图中: 最终的解决方案是使用UISegmentedControl: 希望这可以帮助。     
试试DLRadioButton,适用于
Swift
ObjC
。您还可以使用图像指示选择状态或自定义您自己的样式。 在GitHub上查看。 **更新:在右侧添加了选择指示器的选项。 **更新:添加方形按钮,
IBDesignable
,性能提升。 **更新:添加了多项选择支持。     
对于选项屏幕,特别是在有多个无线电组的情况下,我喜欢使用分组表视图。每个组都是一个无线电组,每个组都是组内的一个选择。使用单元格的附件视图作为复选标记指示您需要哪个选项是微不足道的。 如果只有UIPickerView可以做得更小或者它们的渐变更适合平铺两个页面......     
我知道很晚才回答这个问题,但希望这对任何人都有帮助。 你可以使用
IBOutletCollection
创建像单选按钮一样的按钮。在我们的.h文件中创建一个IBOutletCollection属性。
@property (nonatomic, strong) IBOutletCollection(UIButton) NSArray *ButtonArray;
使用此IBOutletCollection连接所有按钮,并为所有三个按钮制作一个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];
}
    
我已经编写了一个控制器来处理单选按钮数组背后的逻辑。它是开源的,在GitHub上,看看吧! https://github.com/goosoftware/GSRadioButtonSetController     
-(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];
}
    
以下在iOS应用中创建单选按钮的简单方法有两个步骤。 第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];
第二步 - 在你的班级中放入以下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;
    }
}
    

要回复问题请先登录注册