【问题标题】:How To Get Values From UISegmentcontroller如何从 UISegmentcontroller 获取值
【发布时间】:2026-01-11 02:05:02
【问题描述】:

我通过 Interface Builder 创建了段控制。 创建了一个 IBAction 并链接到段控制器的值更改选项。

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

当我单击段控制器时,此方法正在调用,但我将如何获取段控制器的选定索引值。 请帮助我亲爱的。

【问题讨论】:

    标签: iphone uisegmentedcontrol


    【解决方案1】:
    ((UISegmentedControl *)sender).selectedSegmentIndex;
    

    :-)

    【讨论】:

    • 嗨,Alfons,非常感谢……你真的是我的英雄
    • iappdevs:或许好好阅读 UISegmentedControl 文档会有所帮助...
    【解决方案2】:

    我在 view 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;
    

    希望这会有所帮助。

    此致,柯克

    【讨论】: