Swift 4.x 的更新答案:
class SegmentClass: UIViewController {
func addControl() {
let items = ["Uno", "Dos", "Tres"]
let segmentedControl = UISegmentedControl(items: items)
segmentedControl.frame = CGRect(x: 35, y: 200, width: 250, height: 50)
segmentedControl.addTarget(self, action: #selector(segmentAction(_:)), for: .valueChanged)
segmentedControl.selectedSegmentIndex = 1
view.addSubview(segmentedControl)
}
@objc func segmentAction(_ segmentedControl: UISegmentedControl) {
switch (segmentedControl.selectedSegmentIndex) {
case 0:
break // Uno
case 1:
break // Dos
case 2:
break // Tres
default:
break
}
}
}
Objective-C 中的原始答案:
NSArray *itemArray = [NSArray arrayWithObjects: @"Uno", @"Dos", @"Tres", nil];
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:itemArray];
segmentedControl.frame = CGRectMake(35, 200, 250, 50);
[segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents: UIControlEventValueChanged];
segmentedControl.selectedSegmentIndex = 1;
[self.view addSubview:segmentedControl];
- 创建一个数组来存储段的值
- 使用数组初始化段
- 在屏幕上为其分配一个位置并调整控件的大小
- 将其指向在用户与其交互时调用的方法
- 选择一个默认值(在本例中为 Dos)
- 将其放在主视图上
然后创建当用户更改值时调用的segmentAction方法
- (void)segmentAction:(UISegmentedControl *)segment
{
switch (segment.selectedSegmentIndex) {
case 0:
// Uno
break;
case 1:
// Dos
break;
case 2:
// Tres
break;
default:
break;
}
}
我只是更喜欢 switch 语句,因为它看起来更简洁。您可以通过创建一个枚举并将其中的值用于选项 (optionUno,optionDos,optionTres) 而不是 0,1,2 来改进它。