>@property (nonatomic, strong) UIButton *buttonAudio;

>@end


>@implementation PopoverContentViewController


><# Оставшаяся часть вашего кода находится здесь #>


Затем создадим две кнопки в контроллере информационного вида и свяжем их ссылками с методами, обеспечивающими их функционирование. Эти методы будут закрывать тот вспомогательный экран, в котором отображается контроллер информационного вида. Не забывайте, что контроллер вспомогательного экрана будет присваивать себя свойству popoverController, относящемуся к контроллеру информационного вида:


>– (BOOL) isInPopover{


>Class popoverClass = NSClassFromString(@"UIPopoverController");


>if (popoverClass!= nil &&

>UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad &&

>self.popoverController!= nil){

>return YES;

>} else {

>return NO;

>}


>}


>– (void) gotoAppleWebsite:(id)paramSender{


>if ([self isInPopover]){

>/* Перейти на сайт и закрыть вспомогательный экран. */

>[self.popoverController dismissPopoverAnimated: YES];

>} else {

>/* Обработать ситуацию с iPhone. */

>}


>}


>– (void) gotoAppleStoreWebsite:(id)paramSender{


>if ([self isInPopover]){

>/* Перейти на сайт и закрыть вспомогательный экран. */

>[self.popoverController dismissPopoverAnimated: YES];

>} else {

>/* Обработать ситуацию с iPhone. */

>}


>}


>– (void)viewDidLoad{

>[super viewDidLoad];


>self.contentSizeForViewInPopover = CGSizeMake(200.0f, 125.0f);


>CGRect buttonRect = CGRectMake(20.0f,

>20.0f,

>160.0f,

>37.0f);


>self.buttonPhoto = [UIButton buttonWithType: UIButtonTypeRoundedRect];

>[self.buttonPhoto setTitle:@"Photo"

>forState: UIControlStateNormal];

>[self.buttonPhoto addTarget: self

>action:@selector(gotoAppleWebsite:)

>forControlEvents: UIControlEventTouchUpInside];


>self.buttonPhoto.frame = buttonRect;


>[self.view addSubview: self.buttonPhoto];


>buttonRect.origin.y += 50.0f;

>self.buttonAudio = [UIButton buttonWithType: UIButtonTypeRoundedRect];


>[self.buttonAudio setTitle:@"Audio"

>forState: UIControlStateNormal];

>[self.buttonAudio addTarget: self

>action:@selector(gotoAppleStoreWebsite:)

>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];


>}

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