it-swarm.com.ru

Лучшая реализация радио-кнопки для IOS

Я хотел бы спросить, есть ли примеры того, как реализовать переключатели в приложении для iPhone.

Я считаю Picker View довольно большим для простой функции выбора.

Я не уверен, намеренно ли Apple исключила переключатели, и лучше ли просто использовать Picker View с точки зрения удобства использования/взаимодействия с пользователем.

45
Jonas Arcangel

У меня есть некоторые мысли о том, как должна выглядеть лучшая реализация переключателя. Он может основываться на классе UIButton и использовать его состояние «выбранный» для обозначения одного из группы. UIButton имеет собственные параметры настройки в IB, поэтому удобно создавать XIB ........ Также должен быть простой способ группировки кнопок с использованием выходных соединений IB: 

Я реализовал свои идеи в этом классе RadioButton . Работает как шарм:

Загрузить пример проекта .

41
onegray

Попробуйте UISegmentedControl . Он работает аналогично переключателям - предоставляет множество вариантов выбора и позволяет пользователю выбрать 1. 

24
jlstrecker

Просто хочу подвести итог, может быть 4 способа. 

  • Если у вас мало места, добавьте событие нажатия для текста или кнопки, затем покажите UIPickerView:

UIPickerView

или откройте новый элемент управления табличного представления с галочкой: 

UITableView

  • Если места больше, добавьте табличное представление непосредственно к основному виду: 

enter image description here

  • Окончательное решение использует UISegmentedControl: 

enter image description here

Надеюсь это поможет. 

18
thanhbinh84

Try DLRadioButton , работает как для Swift, так и ObjC. Вы также можете использовать изображения, чтобы указать статус выбора или настроить свой собственный стиль. 

Проверьте это на GitHub

radio button for iOS

** Обновление: добавлена ​​опция для размещения индикатора выбора на правой стороне.

** Обновление: добавлена ​​квадратная кнопка, IBDesignable, улучшена производительность.

** Обновление: добавлена ​​поддержка множественного выбора.

7
David Liu

Для экранов опций, особенно там, где есть несколько радиогрупп, мне нравится использовать сгруппированное табличное представление. Каждая группа является радиогруппой, а каждая ячейка - выбором внутри группы. Тривиально использовать вспомогательное представление ячейки для галочки, указывающей, какую опцию вы хотите.

Если бы только UIPickerView можно было сделать чуть меньше, или их градиенты были бы лучше приспособлены для разбиения двух на страницу ...

6
Adam Eberbach

Я знаю, что уже очень поздно, чтобы ответить на это, но надеюсь, что это может кому-нибудь помочь.

вы можете создать кнопку, как переключатель, используя IBOutletCollection. создайте одно свойство IBOutletCollection в нашем .h файле.

@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];
}
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 состоит из двух шагов.

Step1 - Поместите этот код в ваш 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];

Step2- Поместите следующий метод 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;
    }
}
0
Mohammad Kamran Usmani