Обновленный ответ для 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)
- Поместите его в главное представление
Затем создайтеметод plotAction, который вызывается, когда пользователь изменяет значение
- (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.