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

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

Жанры

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

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

Шрифт:

forControlEvents: UIControlEventTouchUpInside];

self.buttonAudio.frame = buttonRect;

[self.view addSubview: self.buttonAudio];

}

Теперь в методе viewDidLoad корневого контроллера вида создадим навигационную кнопку. В зависимости от типа устройства при нажатии навигационной кнопки мы будем отображать либо вспомогательный экран (на iPad), либо предупреждающий

вид (на iPhone):

— (void)viewDidLoad{

[super viewDidLoad];

/* Проверяем, существует ли этот класс в том варианте iOS,

где действует приложение. */

Class popoverClass = NSClassFromString(@"UIPopoverController");

if (popoverClass!= nil &&

UI_USER_INTERFACE_IDIOM == UIUserInterfaceIdiomPad){

PopoverContentViewController *content =

[[PopoverContentViewController alloc] initWithNibName: nil

bundle: nil];

self.popoverController = [[UIPopoverController alloc]

initWithContentViewController: content];

content.popoverController = self.popoverController;

self.barButtonAdd = [[UIBarButtonItem alloc]

initWithBarButtonSystemItem: UIBarButtonSystemItemAdd

target: self

action:@selector(performAddWithPopover:)];

} else {

self.barButtonAdd = [[UIBarButtonItem alloc]

initWithBarButtonSystemItem: UIBarButtonSystemItemAdd

target: self

action:@selector(performAddWithAlertView:)];

}

[self.navigationItem setRightBarButtonItem: self.barButtonAdd

animated: NO];

}

Контроллер вспомогательного экрана ставит на себя ссылку в контроллере информационного вида сразу после инициализации информационного вида. Это очень важно. Контроллер вспомогательного экрана невозможно инициализировать в отсутствие контроллера информационного вида. Как только контроллер вспомогательного экрана инициализирован посредством контроллера информационного вида, можно продолжать работу и изменять контроллер информационного вида в контроллере вспомогательного экрана — но этого нельзя делать в процессе инициализации.

Мы решили, что при нажатии навигационной кнопки + на устройстве iPad будет запускаться метод performAddWithPopover:. Если мы имеем дело

не с iPad, то нужно, чтобы при нажатии этой кнопки запускался метод performAddWithAlertView:. Итак, реализуем два этих метода, а также позаботимся о методах делегатов предупреждающего вида — чтобы нам было известно, какую кнопку в предупреждающем виде нажимает пользователь, работающий с iPhone:

— (NSString *) photoButtonTitle{

return @"Photo";

}

— (NSString *) audioButtonTitle{

return @"Audio";

}

— (void) alertView:(UIAlertView *)alertView

didDismissWithButtonIndex:(NSInteger)buttonIndex{

NSString *buttonTitle = [alertView buttonTitleAtIndex: buttonIndex];

if ([buttonTitle isEqualToString: [self photoButtonTitle]]){

/* Добавляем фотографию… */

}

else if ([buttonTitle isEqualToString: [self audioButtonTitle]]){

/* Добавляем аудио… */

}

}

— (void) performAddWithAlertView:(id)paramSender{

[[[UIAlertView alloc] initWithTitle: nil

message:@"Add…"

delegate: self

cancelButtonTitle:@"Cancel"

otherButtonTitles:

[self photoButtonTitle],

[self audioButtonTitle], nil] show];

}

— (void) performAddWithPopover:(id)paramSender{

[self.popoverController

presentPopoverFromBarButtonItem: self.barButtonAdd

permittedArrowDirections: UIPopoverArrowDirectionAny

animated: YES];

}

Если запустить это приложение в эмуляторе iPad, то при нажатии кнопки + на навигационной панели мы увидим примерно такой интерфейс, как на рис. 1.79.

Рис. 1.79. Простой вспомогательный экран, отображаемый после нажатия навигационной кнопки

Если запустить это же универсальное приложение в эмуляторе iPhone и нажать на навигационной панели кнопку +, результат будет примерно как на рис. 1.80.

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

Молчун-Неучтённый фактор. Компиляция. Книги 1-22

Усманов Хайдарали
Собрание сочинений
Фантастика:
фэнтези
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Молчун-Неучтённый фактор. Компиляция. Книги 1-22

Держава Света (сборник)

Рерих Николай Константинович
Религия и эзотерика:
эзотерика
5.00
рейтинг книги
Держава Света (сборник)

Полное собрание сочинений. Том 14. Война и мир. Черновые редакции и варианты. Часть вторая

Толстой Лев Николаевич
Проза:
русская классическая проза
6.25
рейтинг книги
Полное собрание сочинений. Том 14. Война и мир. Черновые редакции и варианты. Часть вторая

Избранное

Додерер Хаймито
Мастера современной прозы
Проза:
современная проза
5.00
рейтинг книги
Избранное

Veritas

Мональди Рита
Детективы:
исторические детективы
5.00
рейтинг книги
Veritas

Играть... в тебя

Зайцева Мария
3. Звериные повадки Симоновых
Любовные романы:
современные любовные романы
5.25
рейтинг книги
Играть... в тебя

An ordinary sex life

Астердис
Любовные романы:
современные любовные романы
love action
5.00
рейтинг книги
An ordinary sex life

Игра с огнем

Джейн Анна
2. Мой идеальный смерч
Любовные романы:
современные любовные романы
9.51
рейтинг книги
Игра с огнем

Русская рулетка. Как выжить в борьбе за собственное здоровье

Мясников Александр Леонидович
Дом и Семья:
здоровье и красота
5.50
рейтинг книги
Русская рулетка. Как выжить в борьбе за собственное здоровье

Цикл романов "Целитель". Компиляция. Книги 1-17

Большаков Валерий Петрович
Целитель
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Цикл романов Целитель. Компиляция. Книги 1-17

Мост через вечность

Бах Ричард Дэвис
Научно-образовательная:
философия
8.19
рейтинг книги
Мост через вечность

Пепел Асгарда

Перумов Ник
Фантастика:
фэнтези
фантастика: прочее
8.12
рейтинг книги
Пепел Асгарда

Шелковая вендетта

Холт Виктория
Любовные романы:
исторические любовные романы
7.92
рейтинг книги
Шелковая вендетта

По прозвищу Святой. Книга вторая

Евтушенко Алексей Анатольевич
2. Святой
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
По прозвищу Святой. Книга вторая