Контроллеры представления разделения

UISplitViewController класс является контейнерным контроллером представления, управляющим двумя областями информации. Первая область имеет фиксированную ширину 320 точек и высоты, соответствующей видимую высоту окна. Вторая область заполняет остающееся пространство. Рисунок 4-1 показывает, что разделение просматривает интерфейс контроллера.

Рисунок 4-1  интерфейс представления разделения

Области интерфейса представления разделения содержат содержание, которым управляют контроллеры представления, которые Вы обеспечиваете. Поскольку области содержат специализированное содержание, Вам решать для управления взаимодействиями между двумя контроллерами представления. Однако вращениями и другими связанными с системой способами поведения управляет сам контроллер представления разделения.

Контроллер представления разделения должен всегда быть корнем любого интерфейса, который Вы создаете. Другими словами, необходимо всегда устанавливать представление от a UISplitViewController возразите как корневое представление окна Вашего приложения. Области Вашего интерфейса представления разделения могут тогда содержать контроллеры навигации, контроллеры панели вкладок или любой другой тип контроллера представления, необходимо реализовать интерфейс. Контроллеры представления разделения не могут быть представлены модально.

Самый простой способ интегрировать контроллер представления разделения в Ваше приложение состоит в том, чтобы запуститься с нового проекта. Основанный на представлении Шаблон приложений Разделения в XCode обеспечивает хорошую начальную точку для создания интерфейса, включающего контроллер представления разделения. Все необходимо реализовать интерфейс представления разделения, уже предоставлено. Все, что необходимо сделать, изменяют массив контроллеров представления для представления содержания. Процесс для изменения этих контроллеров представления фактически идентичен процессу, используемому в приложениях для iPhone. Единственная разница - то, что Вы теперь имеете больше экранного пространства в наличии для отображения Вашего связанного с подробностью содержания. Однако можно также интегрировать контроллеры представления разделения в существующие интерфейсы.

Создание контроллера представления разделения Используя раскадровку

При создании нового проекта XCode Шаблон приложений Основной Подробности высказывает Вам мнение разделения в раскадровке, набор как первая сцена.

Для добавления разделения просматривают контроллер к существующему приложению:

  1. Откройте основную раскадровку своего приложения.

  2. Перетащите контроллер представления разделения из библиотеки.

    Интерфейсный Разработчик создает контроллер представления разделения контроллер навигации и контроллер представления, и это создает отношения между ними. Эти отношения идентифицируют недавно создаваемые контроллеры представления как левые и правые области контроллера представления разделения.

  3. Выведите на экран его как первый контроллер представления путем выбора опции Is Initial View Controller в инспекторе Атрибутов (или представьте контроллер представления в пользовательском интерфейсе в другом отношении.)

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

Создание контроллера представления разделения программно

Для создания контроллера представления разделения программно создайте новый экземпляр UISplitViewController класс и присваивает контроллеры представления своим двум свойствам. Поскольку его содержание создается на лету из контроллеров представления, которые Вы обеспечиваете, Вы не должны указывать файл пера при создании контроллера представления разделения. Поэтому можно просто использовать init метод для инициализации его. Перечисление 4-1 показывает пример того, как создать и сконфигурировать интерфейс представления разделения во время запуска. Вы заменили бы первые и вторые контроллеры представления объектами контроллера представления, представляющими содержание Вашего приложения. window переменная, как предполагается, является выходом, указывающим на окно, загруженное из основного файла пера Вашего приложения.

Перечисление 4-1  , Создающее разделение, просматривает контроллер программно

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
   MyFirstViewController* firstVC = [[MyFirstViewController alloc] init];
   MySecondViewController* secondVC = [[MySecondViewController alloc] init];
 
   UISplitViewController* splitVC = [[UISplitViewController alloc] init];
   splitVC.viewControllers = [NSArray arrayWithObjects:firstVC, secondVC, nil];
 
    window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    window.rootViewController = splitVC;
   [window makeKeyAndVisible];
 
   return YES;
}

Поддержка изменений ориентации в представлении разделения

Контроллер представления разделения полагается на свои два содержавших контроллера представления для определения, какие ориентации поддерживаются. Если оба содержавших контроллера представления делают, это только поддерживает ориентацию. Даже если один из содержавших контроллеров представления в настоящее время не выводится на экран, он должен поддерживать ориентацию. Когда ориентация изменяется, контроллер представления разделения обрабатывает большинство способов поведения вращения автоматически.

В альбомной ориентации контроллер представления разделения представляет две области бок о бок с маленьким делителем, разделяющим их. В портретной ориентации контроллер представления разделения или показывает обе области, или он показывает только вторую, большую область и обеспечивает кнопку на панели инструментов для отображения первой области с помощью легкой сдобы, в зависимости от значения, возвращенного splitViewController:shouldHideViewController:inOrientation: делегат метод.