Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

Загрузите образец проекта.

Ответ 2

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

Ответ 3

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

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

UIPickerView

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

UITableView

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

enter image description here

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

enter image description here

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

Ответ 4

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

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

radio button for iOS

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

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

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

Ответ 5

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

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

Ответ 6

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

https://github.com/goosoftware/GSRadioButtonSetController

Ответ 7

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

вы можете создать кнопку, например, с помощью кнопки 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];

   }
}

Ответ 8

-(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];
}

Ответ 9

Следующий простой способ создания переключателя в приложении 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];

Шаг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;
    }
}