UI: UISegmentedControl 做简单选项分组及其自定义

问题:

想显示给用户一些简洁、易理解的选项,用户可以选择其中的一项。 
先创建一个 UISegmentedControl 实例来初始化一个该控件 :
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.view.backgroundColor = [UIColor whiteColor];
    NSArray *segments = [[NSArray alloc]initWithObjects:
                         @"iPhone",
                         @"iPad",
                         @"iPod",
                         @"iMac", nil];
    
 _mySegmentControl = [[UISegmentedControl alloc]initWithItems:segments];
    _mySegmentControl.center = self.view.center;
    
    [self.view addSubview:_mySegmentControl];
}
现在的问题是我们怎么知道用户选中了一个选项呢?答案很简单。就像 UISwitch 和 UISlider 一样,用 addTarget:action:forControlEvents:方法来添加一个 target. 需要给参数 forControlEvents 传 UIControlEventValueChanged 值因为当用户选择了一个控件中的选项时, 正是这个参数触发了事件。 
[_mySegmentControl addTarget:self action:@selector(segmentChanged:) forControlEvents:UIControlEventValueChanged];
//segment选项变化时调用方法
- (void)segmentChanged:(UISegmentedControl *)paramSender{
    if ([paramSender isEqual:_mySegmentControl]) {
        NSInteger selectedSegmentIndex = [paramSender selectedSegmentIndex];
        NSString *selectedSegmentText = [paramSender titleForSegmentAtIndex:selectedSegmentIndex];
        NSLog(@"Segment %ld with %@ text is selected", (long)selectedSegmentIndex,selectedSegmentText);
    }
}
如果你想要用户在选中一个选项之后,该选项马上变回原始状态(就像没有 被选中一样),需要将 momentary 属性设置为 YES。 
_mySegmentControl.momentary = YES;
分段控件的一个非常灵活的特性是它可以显示图片。想要显示图片的话,使用 initWithObjects:初始化方法同时传递图片、字符、图片作为参数。 
NSArray *segments = [[NSArray alloc] initWithObjects: @"iPhone",
[UIImage imageNamed:@"iPad.png"],
@"iPod",
@"iMac", nil];
self.mySegmentedControl = [[UISegmentedControl alloc] initWithItems:segments];
原文地址:https://www.cnblogs.com/safiri/p/4015744.html