Читаем iOS. Приемы программирования полностью

— (void) switchIsChanged:(UISwitch *)paramSender{

if ([paramSender isOn]){

NSLog(@"Switch is on.");

} else {

NSLog(@"Switch is off.");

}

}


— (void)viewDidLoad{

[super viewDidLoad];

self.view.backgroundColor = [UIColor whiteColor];

self.title = @"First Controller";


UISwitch *simpleSwitch = [[UISwitch alloc] init];

simpleSwitch.on = YES;

[simpleSwitch addTarget: self

action:@selector(switchIsChanged:)

forControlEvents: UIControlEventValueChanged];


self.navigationItem.rightBarButtonItem =

[[UIBarButtonItem alloc] initWithCustomView: simpleSwitch];

}


Вот что получается (рис. 1.40).


Рис. 1.40. Переключатель, добавленный на навигационную панель


На навигационной панели можно создавать очень и очень занятные кнопки. Просто взгляните, что делает Apple со стрелками, направленными вверх и вниз, расположенными в правом верхнем углу на рис. 1.36. А почему бы нам тоже так не сделать? Впечатление такое, как будто в кнопку встроен сегментированный элемент управления (см. раздел 1.8). Итак, нам нужно создать такой элемент управления с двумя сегментами, добавить его на навигационную кнопку и, наконец, поставить эту кнопку на навигационную панель. Начнем:


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

switch (paramSender.selectedSegmentIndex){

case 0:{

NSLog(@"Up");

break;

}

case 1:{

NSLog(@"Down");

break;

}

}


}


— (void)viewDidLoad{

[super viewDidLoad];


self.title = @"First Controller";


NSArray *items = @[

@"Up",

@"Down"

];


UISegmentedControl *segmentedControl = [[UISegmentedControl alloc]

initWithItems: items];


segmentedControl.momentary = YES;


[segmentedControl addTarget: self

action:@selector(segmentedControlTapped:)

forControlEvents: UIControlEventValueChanged];


self.navigationItem.rightBarButtonItem =

[[UIBarButtonItem alloc] initWithCustomView: segmentedControl];

}


На рис. 1.41 показано, что должно получиться в итоге.


Рис. 1.41. Сегментированный элемент управления, встроенный в навигационную кнопку


Элемент navigationItem любого контроллера вида имеет еще два замечательных метода:

• setRightBarButtonItem: animated: — задает правую кнопку навигационной панели;

• setLeftBarButtonItem: animated: — определяет левую кнопку навигационной панели.

Оба метода позволяют указывать, хотите ли вы анимировать кнопку. Задайте значение YES для параметра animated, если анимация нужна:


UIBarButtonItem *rightBarButton =

[[UIBarButtonItem alloc] initWithCustomView: segmentedControl];


[self.navigationItem setRightBarButtonItem: rightBarButtonanimated: YES];

См. также

Подраздел «Создание и запуск вашего первого приложения для iOS» раздела 1.0 данной главы. Разделы 1.2, 1.8, 1.12.

1.16. Представление контроллеров, управляющих несколькими видами, с помощью UITabBarController

Постановка задачи

Необходимо дать пользователям возможность переключаться из одного раздела вашего приложения в другой, причем делать это просто.

Решение

Используйте класс UITabBarController.

Обсуждение

Если вы пользуетесь iPhone как будильником, то, разумеется, замечали на экране панель вкладок. Взгляните на рис. 1.38. В нижней части экрана расположены значки, которые называются World Clock (Мировое время), Alarm (Будильник), Stopwatch (Секундомер) и Timer (Таймер). Вся черная полоса в нижней части экрана — это панель вкладок, а вышеупомянутые ярлыки — ее элементы.

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже