问题:
想显示给用户一些简洁、易理解的选项,用户可以选择其中的一项。
先创建一个 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];