Чтение онлайн

на главную - закладки

Жанры

iOS. Приемы программирования

Нахавандипур Вандад

Шрифт:

@property (nonatomic, strong) UISegmentedControl *mySegmentedControl;

@end

@implementation ViewController

Создаем сегментированный элемент управления в методе viewDidLoad контроллера нашего вида:

— (void)viewDidLoad{

[super viewDidLoad];

NSArray *segments = [[NSArray alloc] initWithObjects:

@"iPhone",

@"iPad",

@"iPod",

@"iMac", nil];

self.mySegmentedControl = [[UISegmentedControl alloc]

initWithItems: segments];

self.mySegmentedControl.center = self.view.center;

[self.view addSubview: self.mySegmentedControl];

}

Чтобы

представить разные параметры, которые будут предлагаться на выбор в нашем сегментированном элементе управления, мы используем обычный массив строк. Такой элемент управления инициализируется с помощью метода initWithObjects:. Потом передаем сегментированному элементу управления массив строк и изображений. Результат будет как на рис. 1.22.

Теперь пользователь может выбрать в сегментированном элементе управления один из параметров. Допустим, он выбирает iPad. Тогда пользовательский интерфейс сегментированного элемента управления изменится и покажет пользователю, какой параметр будет выбран. Получится такое изображение, как на рис. 1.23.

Рис. 1.23. Пользователь выбрал один из вариантов в сегментированном элементе управления

Возникает вопрос: как узнать, что пользователь выбрал в сегментированном элементе управления новый параметр? Ответ прост. Как и при работе с UISwitch или UISlider, применяется метод addTarget: action: forControlEvents: сегментированного элемента управления, к которому добавляется цель. Для параметра forControlEvents нужно задать значение UIControlEventValueChanged, так как именно это событие запускается, когда пользователь выбирает в сегментированном элементе управления новый параметр:

— (void) segmentChanged:(UISegmentedControl *)paramSender{

if ([paramSender isEqual: self.mySegmentedControl]){

NSInteger selectedSegmentIndex = [paramSender selectedSegmentIndex];

NSString *selectedSegmentText =

[paramSender titleForSegmentAtIndex: selectedSegmentIndex];

NSLog(@"Segment %ld with %@ text is selected",

(long)selectedSegmentIndex,

selectedSegmentText);

}

}

— (void)viewDidLoad{

[super viewDidLoad];

NSArray *segments = [[NSArray alloc] initWithObjects:

@"iPhone",

@"iPad",

@"iPod",

@"iMac", nil];

self.mySegmentedControl = [[UISegmentedControl alloc]

initWithItems: segments];

self.mySegmentedControl.center = self.view.center;

[self.view addSubview: self.mySegmentedControl];

[self.mySegmentedControl addTarget: self

action:@selector(segmentChanged:)

forControlEvents: UIControlEventValueChanged];

}

Если

пользователь начинает выбирать слева и выбирает каждый параметр (см. рис. 1.22) до правого края, на консоль будет выведен следующий текст:

Segment 0 with iPhone text is selected

Segment 1 with iPad text is selected

Segment 2 with iPod text is selected

Segment 3 with iMac text is selected

Как видите, мы использовали метод selectedSegmentIndex сегментированного элемента управления, чтобы найти индекс варианта, выбранного в настоящий момент. Если ни один из элементов не выбран, метод возвращает значение –1. Кроме того, мы использовали метод titleForSegmentAtIndex:. Просто передаем этому методу индекс параметра, выбранного в сегментированном элементе управления, а сегментированный элемент управления возвратит текст, соответствующий этому параметру. Ведь просто, правда?

Как вы, вероятно, заметили, как только пользователь отмечает один из параметров в сегментированном элементе управления, этот параметр выбирается и остается выбранным, как показано на рис. 1.23. Если вы хотите, чтобы пользователь выбрал параметр, но кнопка этого параметра не оставалась нажатой, а возвращалась к исходной форме (так сказать, «отщелкивалась обратно», как и обычная кнопка), то нужно задать для свойства momentary сегментированного элемента управления значение YES:

self.mySegmentedControl.momentary = YES;

Одна из самых приятных особенностей сегментированных элементов управления заключается в том, что они могут содержать не только текст, но и изображения. Для этого нужно просто использовать метод-инициализатор initWithObjects: класса UISegmentedControl и передать с этим методом те строки и изображения, которые будут применяться при реализации соответствующего пользовательского интерфейса:

— (void)viewDidLoad{

[super viewDidLoad];

NSArray *segments = [[NSArray alloc] initWithObjects:

@"iPhone",

[UIImage imageNamed:@"iPad"],

@"iPod",

@"iMac",

];

self.mySegmentedControl = [[UISegmentedControl alloc]

initWithItems: segments];

CGRect segmentedFrame = self.mySegmentedControl.frame;

Поделиться:
Популярные книги

В лапах зверя

Зайцева Мария
1. Звериные повадки Симоновых
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
В лапах зверя

Чужак из ниоткуда 4

Евтушенко Алексей Анатольевич
4. Чужак из ниоткуда
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Чужак из ниоткуда 4

Идеальный мир для Демонолога 5

Сапфир Олег
5. Демонолог
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Демонолога 5

Идеальный мир для Лекаря 15

Сапфир Олег
15. Лекарь
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 15

Кодекс Охотника. Книга XVIII

Винокуров Юрий
18. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XVIII

Спасите меня, Кацураги-сан!

Аржанов Алексей
1. Токийский лекарь
Фантастика:
городское фэнтези
попаданцы
дорама
5.00
рейтинг книги
Спасите меня, Кацураги-сан!

Огненный наследник

Тарс Элиан
10. Десять Принцев Российской Империи
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Огненный наследник

Морской волк. 1-я Трилогия

Савин Владислав
1. Морской волк
Фантастика:
альтернативная история
8.71
рейтинг книги
Морской волк. 1-я Трилогия

Локки 11. Потомок бога

Решетов Евгений Валерьевич
11. Локки
Фантастика:
героическая фантастика
боевая фантастика
фэнтези
юмористическое фэнтези
5.00
рейтинг книги
Локки 11. Потомок бога

Кодекс Охотника. Книга XXIX

Винокуров Юрий
29. Кодекс Охотника
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Охотника. Книга XXIX

Ученик

Листратов Валерий
2. Ушедший Род
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Ученик

Наша навсегда

Зайцева Мария
2. Наша
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Наша навсегда

Курсант: назад в СССР 2

Дамиров Рафаэль
2. Курсант
Фантастика:
попаданцы
альтернативная история
6.33
рейтинг книги
Курсант: назад в СССР 2

Девяностые приближаются

Иванов Дмитрий
3. Девяностые
Фантастика:
попаданцы
альтернативная история
7.33
рейтинг книги
Девяностые приближаются