Требования к операционной системе: iOS 5.0 и выше.
Мобильное устройство: iPad.
В данном примере демонстрируется работа с контейнером, разделённым на два представления данных. После запуска примера выполняются следующие операции:
в качестве первого представления данных устанавливается контейнер панели измерений;
в качестве второго представления данных устанавливается таблица;
сворачивается, а затем удаляется первое представление данных;
отображается и скрывается индикатор загрузки второго представления.
Для выполнения примера необходимо разместить в теле метода executeExample класса ViewController (см. раздел «Отображение экспресс-отчёта») следующий код:
// Получаем контроллер для работы с экспресс-отчётом MAExpressAnalysisReportViewController *contr = (MAExpressAnalysisReportViewController *)m_controller; // Получаем контейнер панели измерений PanelViewController *panelViewCtrl = [contr panelViewController]; // Создаём контроллер для работы с контейнером, разделённым на два представления данных SplitViewController *splitController = [SplitViewController new]; // Загружаем контейнер [splitController loadView]; // Получаем контейнер, разделённый на два представления SplitView *splitView = [splitController splitView]; // Устанавливаем делегат для работы с контейнером [splitView setDelegate: splitController]; // Устанавливаем контейнер панели измерений в качестве первого представления данных [splitView setFirstView: [panelViewCtrl view]]; // Создаём таблицу для отображения в качестве второго представления данных UITableViewController *table = [UITableViewController new]; // Устанавливаем второе представление данных [splitView setSecondView: [table view]]; // Отключаем анимацию при изменении положения разделителя [splitView setNoResizeUntilAnimated: YES]; // Отображаем контейнер, разделённый на два представления [self showViewControllerInNavigationController: splitController];
В результате выполнения примера был отображён контейнер, разделённый на два представления - контейнер панели измерений и таблицу:

Теперь свернём первое представление данных, зафиксируем размеры второго представления данных и установим новый отступ для него, добавив к примеру следующий код:
// Запрещаем взаимодействие пользователя со вторым представлением данных
[[splitView secondView] setUserInteractionEnabled: NO];
// Фиксируем размеры второго представления данных
[splitView setFixSecondViewSize: YES];
// Сворачиваем первое представление данных
[splitView setFirstViewHidden: YES];
if ([splitView secondView].userInteractionEnabled == YES) {
NSLog(@"Второе представление данных доступно для взаимодействия с пользователем");
} else {
NSLog(@"Второе представление данных не доступно для взаимодействия с пользователем");
}
[[splitView delegate] splitView: splitView firstViewHiddenStateChanged:[splitView firstViewHidden]];
// Увеличиваем отступ второго представления данных от левой границы контейнера
[splitView setHasControls: NO];
[splitView setOverlap: splitController.splitView.separatorPosition + 150];
После выполнения примера первое представление данных было свёрнуто, а отступ второго представления данных был увеличен на 150 пикселей:

Для второго представления данных были зафиксированы размеры и разрешено взаимодействие с пользователем, о чём было сообщено в консоли среды разработки.
Полностью удалим первое представление данных и отобразим полноэкранный индикатор загрузки второго представления данных, добавив к примеру следующий код:
// Загружаем контейнер без первого представления данных [splitView setNoFirstViewMode: YES]; // Указываем, что контейнер не содержит элементы управления [splitView setHasControls: NO]; // Отображаем полноэкранный индикатор загрузки для второго представления данных [splitView showFullScreenWaiter];

Отобразить индикатор загрузки второго представления данных можно с помощью метода showWaiter:
[splitView showWaiter];
Чтобы скрыть полноэкранный индикатор загрузки второго представления данных, вызовем метод hideWaiter:
[splitView hideWaiter];
После этого полноэкранный индикатор загрузки будет удалён:

См. также: