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

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

Жанры

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

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

Шрифт:

UIBarButtonSystemItemRedo,

#endif

#if __IPHONE_4_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED

UIBarButtonSystemItemPageCurl,

#endif

};

Один из самых интересных инициализаторов из класса UIBarButtonItem — метод initWithCustomView:. В качестве параметра этот метод может принимать любой вид, то есть мы даже можем добавить на навигационную панель в качестве навигационной кнопки UISwitch (см. раздел 1.2). Это будет выглядеть

не очень красиво, но мы просто попробуем:

— (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: rightBarButton
animated: YES];

См. также

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

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

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

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

Решение

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

Обсуждение

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

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

Игрок, или Брат 2. Америка, бойся русских!

Колычев Владимир Григорьевич
Детективы:
боевики
4.80
рейтинг книги
Игрок, или Брат 2. Америка, бойся русских!

Путешествие на Запад. Том 1

Чэн-энь У
1. Путешествие на Запад
Проза:
классическая проза
5.00
рейтинг книги
Путешествие на Запад. Том 1

Чертов мост, или Моя жизнь как пылинка. Истории : (записки неунывающего)

Симуков Алексей Дмитриевич
Символы времени
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Чертов мост, или Моя жизнь как пылинка. Истории : (записки неунывающего)

Париж в 1814-1848 годах. Повседневная жизнь

Мильчина Вера Аркадьевна
Культура повседневности
Научно-образовательная:
история
культурология
5.00
рейтинг книги
Париж в 1814-1848 годах. Повседневная жизнь

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

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

Жертва

Привалов Сергей
2. Звездный Бродяга
Фантастика:
боевая фантастика
космическая фантастика
рпг
попаданцы
6.25
рейтинг книги
Жертва

Зеркало ее сновидений

Дональдсон Стивен Ридер
1. Нужды Морданта
Фантастика:
фэнтези
7.17
рейтинг книги
Зеркало ее сновидений

Жизнь замечательных Блонди

Измайлова Кира Алиевна
1. Ai no Kusabi
Фантастика:
космическая фантастика
8.29
рейтинг книги
Жизнь замечательных Блонди

Илион

Симмонс Дэн
1. Троя
Фантастика:
эпическая фантастика
научная фантастика
7.75
рейтинг книги
Илион

Имя нам Легион. Том 6

Дорничев Дмитрий
6. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 6

О кулинарии от А до Я. Словарь-справочник

Похлебкин Вильям Васильевич
Дом и Семья:
кулинария
5.00
рейтинг книги
О кулинарии от А до Я. Словарь-справочник

Новый выбор оружия

Левицкий Андрей Юрьевич
Апокалипсис-СТ
Фантастика:
боевая фантастика
8.20
рейтинг книги
Новый выбор оружия

Северное сияние

Робертс Нора
Любовные романы:
остросюжетные любовные романы
8.66
рейтинг книги
Северное сияние

И тогда мы скоро полетим на Марс, если только нам это будет нужно

Павлов Алексей Андреевич
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
И тогда мы скоро полетим на Марс, если только нам это будет нужно