iphone что использовать как нет "радио кнопок" - PullRequest
0 голосов
/ 23 мая 2011

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

Если бы у меня было несколько объектов UISwitch, как бы я запустил другие, противоположные тому, что я переключил?

Ответы [ 5 ]

4 голосов
/ 23 мая 2011

Я создал проект, который показывает, как именно добиться того, что вы просите. Вы можете поменять графику с флажков (которые я считаю немного лучше видеть и понимать на устройстве) на переключатели.

Прочитайте журнал отладки, чтобы понять логику.

Если у вас есть какие-либо вопросы, дайте мне крик.

Пример проекта радио-кнопок (XCode4)

[это в ответ на ваши комментарии ниже]

4 голосов
/ 23 мая 2011

Я использую кнопки с изображениями, которые действуют как переключатели.то есть выключенное изображение и включенное изображение.Преимущество этого подхода в том, что его очень просто реализовать, и вы можете использовать изображение для управления состоянием кнопки.Он работает как простой переключатель и не требует особого состояния кнопки.Вы можете легко добавить код в метод, который что-то делает, когда кнопки включены или выключены, в примере я просто вызываю метод, который записывает некоторые пользовательские значения по умолчанию.

Для создания переключателя должно быть довольно легко адаптироватьсяфункциональность.

 -(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];  
      }       
 }
3 голосов
/ 23 мая 2011

Я также использовал пользовательский 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

2 голосов
/ 02 августа 2014

Попробуйте установить переключатель в 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

Введите код в файл .m, укажите стандартное и выбранное изображение в окне инспектора раскадровки и присвойте значение тега каждой кнопке.

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;
    }
}
2 голосов
/ 23 мая 2011

Я использовал UISegmentedControl в качестве переключателей.

...