Работа с контейнером, разделённым на два представления данных (пример 2)

Требования к операционной системе: 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];

После этого полноэкранный индикатор загрузки будет удалён:

См. также:

Примеры использования компонентов