Как получить значения из контроллера UISegmentcontroller

Я создал управление сегментами через Interface Builder. Создан IBAction и связан с параметром изменения значения контроллера сегмента.

- (IBAction)GenderBttonAction:(id)sender {
    printf("\n Segemt Controll");
   } 

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


person Community    schedule 12.02.2009    source источник


Ответы (2)


Я использую следующий код в представлении controller.m, чтобы запустить модальный контроллер, и, похоже, он работает хорошо для меня.

- (void)viewDidLoad 
{
    NSArray *segmentContent = [NSArray arrayWithObjects:
                               NSLocalizedString(@"view 1", @""),
                               NSLocalizedString(@"view 2", @""),
                               NSLocalizedString(@"Close", @""),
                               nil];
     //or images insted of text
     //NSArray *segmentContent = [NSArray arrayWithObjects:
        //                          [UIImage imageNamed:@"pic.png"],
        //                          [UIImage imageNamed:@"spic.png"],
        //                          [UIImage imageNamed:@"close.png"],
        //                          nil]];


    UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:segmentContent];
    segmentedControl.selectedSegmentIndex = UISegmentedControlNoSegment;
    segmentedControl.momentary = YES; // option
    segmentedControl.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
    segmentedControl.frame = CGRectMake(0, 0, 160, 30);
    [segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
    UIBarButtonItem *segments = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];
    [segmentedControl release];
    self.navigationItem.rightBarButtonItem = segments;
    self.navigationItem.title = @"My title";
    [segments release];

Затем добавьте действия при выборе, последнее — оператор закрытия, если вы запустили модальный контроллер.

- (IBAction)segmentAction:(id)sender
{
    UISegmentedControl *segmentedControl = (UISegmentedControl *)sender;
    switch ([sender selectedSegmentIndex])
    {
        case 0: 
        {   



// Do stuff like launch a modal controller. But don't forget to add this all into your modal controller views to get back out :)
InfoViewController *infoViewController = [[InfoViewController alloc] initWithNibName:@"InfoViewController" bundle:nil];
            UINavigationController *aInfoViewController = [[UINavigationController alloc] initWithRootViewController:infoViewController];
            [self presentModalViewController:aInfoViewController animated:YES];


        break;
    }
    case 1: 
    {



// do stuff



break;
    }
    case 2: 
    {
        [self.parentViewController dismissModalViewControllerAnimated:YES];         
        break;
    }
}
NSLog(@"Segment clicked: %d", segmentedControl.selectedSegmentIndex);
}   

Используйте метод ниже, если необходимо закрыть модальное окно таким образом.

- (IBAction)dismissAction:(id)sender
{
    [self.parentViewController dismissModalViewControllerAnimated:YES];
}

и не забудьте объявить действие/метод в том же соответствующем файле h.

- (IBAction)dismissAction:(id)sender;

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

С уважением, Кирк

person Digiguy    schedule 03.12.2009

person    schedule
comment
Эй, Альфонс! Большое-большое спасибо... U R My Hero Really - person ; 12.02.2009
comment
iappdevs: Возможно, было бы полезно внимательно прочитать документацию по UISegmentedControl... - person August; 12.02.2009