Как проверить, выбран ли UISegmentedControl пользователем или нет? - PullRequest
5 голосов
/ 23 августа 2011

У меня есть приложение, в котором я динамически выделяю 5 UISegmentedControl.И получил кнопку Готово в конце.Мое условие, чтобы перейти к следующему шагу (когда нажата кнопка «Готово»), все UISegmentControl s «должны быть выбраны пользователем».

Выбор по умолчанию в сегменте управления - none.Как проверить, все ли выбранные пользователем UISegmentedControls выбраны пользователем до выполнения действия над кнопкой «Готово»?

Ответы [ 4 ]

11 голосов
/ 23 августа 2011

Прямо из яблочного документа, это должно ответить на ваш вопрос:

@property(nonatomic) NSInteger selectedSegmentIndex

Обсуждение Значение по умолчанию - UISegmentedControlNoSegment (сегмент не выбран), пока пользователь не коснется сегмента.

Надеюсь, что вы можете использовать это, чтобы проверить, выбрано ли значение пользователем или нет, чтобы предотвратить переход на следующую страницу.

6 голосов
/ 17 января 2014
NSLog(@"%i", self.segment.selectedSegmentIndex);

это приводит к -1, если сегмент не выбран.

0 голосов
/ 23 августа 2011

Вот как вы создаете UISegmentedControl

NSArray *itemArray = [NSArray arrayWithObjects: @"Title1", @"Title2", @"Title3", @"Title4",nil];
segmentedControl = [[UISegmentedControl alloc] initWithItems:itemArray];
segmentedControl.frame = CGRectMake(0, 0, 310, 35);
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
segmentedControl.selectedSegmentIndex = 0;
[segmentedControl addTarget:self action:@selector(pickOne:) forControlEvents:UIControlEventValueChanged];   
segmentedControl.tintColor=[UIColor grayColor];

Затем, чтобы найти, какой сегмент был выбран,

NSString *category =[segmentedControl titleForSegmentAtIndex: [segmentedControl selectedSegmentIndex]];

if(category==@"Title1"){
    //Do something here..
}

Надеюсь, это поможет .... Счастливое кодирование

0 голосов
/ 23 августа 2011

добавить цель и действие к вашему сегменту Controls для UIControlEventValueChanged.С помощью селектора, который вы дали в действии, проверьте, какой сегментControl был изменен, и установите соответствующий ему флаг (например: массив строк с @ "0" для не выбранных и @ "1" после выбора).всякий раз, когда проверяется, какие флаги не установлены, соответствующие сегменты сегмента ControlControls никогда не выбирались.

...