Не удается прочитать индекс сегментированного управления - PullRequest
0 голосов
/ 10 декабря 2011

Ранее я реализовал несколько объектов UISegmentedControl, но по той или иной причине я не могу реализовать его в ячейке табличного представления. Я хочу, чтобы пользователь выбрал свой пол. если значение segmentedControl изменилось, вызывается метод, чтобы сохранить его для дальнейшей обработки.

self.seg = [[UISegmentedControl alloc]initWithItems:[NSArray arrayWithObjects:@"Man",@"Female", nil]];
[self.seg addTarget:self action:@selector(toggleGender) forControlEvents:UIControlEventValueChanged];

Я создал метод:

-(void)toggleGender{
    NSLog(@"%d",self.seg.selectedSegmentIndex)
    if (self.seg.selectedSegmentIndex == 0)
    {
         NSLog(@"User is a man");
    } else if (self.seg.selectedSegmentIndex == 1)
    {    NSLog(@"User is a female");
    }
}

Первый NSLog печатает -1 как значение, если значение изменилось.

Я объявил seg в заголовочном файле, создал свойство и синтезировал его! В настоящее время я НЕ делаллинг на этом объекте. (Я знаю, что это утечка памяти)

Почему я не могу прочитать выбранный сегмент и почему он возвращает -1 как выбранный элемент?

1 Ответ

1 голос
/ 10 декабря 2011

Попробуйте это:

self.seg = [[UISegmentedControl alloc]initWithItems:[NSArray arrayWithObjects:@"Man",@"Female", nil]];
[self.seg addTarget:self action:@selector(toggleGender:) forControlEvents:UIControlEventValueChanged];

(ЗАМЕТЬТЕ ':' в @selector ..) . И измените свою функцию следующим образом:

-(void)toggleGender:(id)sender
{
    if ([sender isKindOfClass:[UISegmentedControl class]]) 
    {
        NSLog(@"%d",[(UISegmentedControl *)sender selectedSegmentIndex]);
        if ([(UISegmentedControl *)sender selectedSegmentIndex] == 0)
        {
            NSLog(@"User is a man");
        }
        else if ([(UISegmentedControl *)sender selectedSegmentIndex] == 1)
        {
            NSLog(@"User is a female");
        }
    }
}
...