uisplitviewcontroller ios xcode

Popovers

Хотя сам по себе и не является контроллером вида, класс UIPopoverController управляет отображением контроллеров видов. Вы можете использовать объект контроллера popover для отображения контента с использованием popover, который является визуальным слоем, парящим над окном вашего приложения. Popover контроллеры обеспечивают легкий способ представления или сбора информации от пользователя и обычно используются в следующих ситуациях:

  • Для отображения информации об объекте на экране.
  • Для управления часто используемыми инструментами или параметрами конфигурации.
  • Представить список действий для выполнения над объектами внутри одного из ваших видов.
  • Представить одну из панелей из Split View контроллера, когда устройство находится в портретной ориентации

Создание и отображение Popover

Контент в popover представляется из объекта контроллера вида, который вы предоставляете. Popovers способны представлять большинство типов контроллеров видов. Когда вы будете готовы представить этот контроллер вида в popover, выполните следующие действия:

  1. Создайте экземпляр класса UIPopoverController и инициализируйте его с объектом контроллером вида.
  2. Укажите размер popover, который вы можете сделать одним из двух способов:
    • Назначьте значение свойству contentSizeForViewInPopover контроллера вида, который должен отображаться в popover.
    • Назначьте значение свойству popoverContentSize непосредственно самого Popover.
  3. (Необязательно) свяжите делегат с popover.
  4. Отобразите popover.

При отображении popover, он ассоциируется с определенной частью пользовательского интерфейса. Popovers обычно связаны с кнопкой на панели инструментов, поэтому метод presentPopoverFromBarButtonItem:permittedArrowDirections:animated: является удобным способом отобразить popover из панели инструментов вашего приложения. Вы также можете связать popover с определенной частm. одного из ваших видов, использующих метод presentPopoverFromRect:inView:permittedArrowDirections:animated:.

Popover обычно получает свой начальный размер от свойства contentSizeForViewInPopover контроллера вида перед отображением. По умолчанию размер хранится в этом свойстве и составляет 320 пикселей в ширину и 1100 пикселей в высоту. Вы можете настроить значение по умолчанию путем присвоения нового значения свойству contentSizeForViewInPopover. Кроме того, можно присвоить значение свойству popoverContentSize самого контроллера popover. Если изменить контроллер вида, отображаемого popover, любая информация нестандартного размера размещенная в свойсте popoverContentSize заменяется размером нового контроллера вида. Изменения в контроллере вида контента или его размера во время отображения popover автоматически анимируется. Вы также можете изменить размер (с или без анимации) с помощью метода setPopoverContentSize:animated:.

Пример представления popover программно:

- (IBAction)toolbarItemTapped:(id)sender
{
   MyViewController* content = [[MyViewController alloc] init];
   UIPopoverController* aPopover = [[UIPopoverController alloc]
        initWithContentViewController:content];
   aPopover.delegate = self;
 
   // Store the popover in a custom property for later use.
   self.popoverController = aPopover;
 
   [self.popoverController presentPopoverFromBarButtonItem:sender
        permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}

Popovers закрываются автоматически, когда пользователь нажимает вне поля вида popover. Нажатия в пределах popover не приводят к его автоматическому закрытию, но вы можете закрыть его программно с помощью метода dismissPopoverAnimated:. Это можно сделать, когда пользователь выбирает элемент в содержимом вашего контроллера вида или выполняет какие-то действия, которые гарантируют удаление popover с экрана. Если закрыть popover программно, то необходимо хранить ссылку на объект контроллера popover в месте, где ваш контроллер вида может получить к нему доступ. Система не дает ссылку на текущий активный контроллер popover.

Реализация делегата Popover

Когда popover закрыт от пользовательских нажатий за пределами вида popover, popover автоматически уведомляет своего делегата. Если вы предоставляете делегат, вы можете использовать этот объект, чтобы предотвратить закрытие popover или выполнить дополнительные действия в ответ на закрытие. Метод делегата popoverControllerShouldDismissPopover: позволяет принять решение о том - следует ли закрывать popover. Если ваш делегат не реализовывает этот метод, или если ваша реализация возвращает YES, контроллер закрывает popover и посылает сообщение делегату popoverControllerDidDismissPopover:.

В большинстве случаев, вам не нужно переопределять метод popoverControllerShouldDismissPopover: вообще. Метод предназначен для ситуаций, когда закрытие popover может вызвать проблемы для вашего приложения. Вместо возвращения NO от этого метода, лучше, избежать ситуаций, которые требуют поддержания popover активным. Например, было бы лучше, представить свой ​​контент модально и заставить пользователя ввести необходимую информацию и принять или отменить изменения.

К моменту вызова метода popoverControllerDidDismissPopover:, сам popover уже удален с экрана. Это удобный момент, чтобы безопасно удалить существующие ссылки на контроллер popover, если вы не планируете использовать его снова. Вы также можете использовать этот метод, чтобы обновить пользовательский интерфейс или обновить состояние вашего приложения.

 
 
homeЗаметили ошибкукарта сайта 
   Made on a Mac