Применение условного форматирования и отображение индикаторов роста

Требования к операционной системе: iOS 5.0 и выше.

Мобильное устройство: iPad.

Описание

В данном примере применяются настройки условного форматирования для всей таблицы экспресс-отчёта и отображаются индикаторы роста, построенные по строкам.

Исходный код

Для выполнения примера необходимо разместить в теле метода executeExample класса ViewController (см. раздел «Отображение экспресс-отчёта») следующий код:

MAExpressAnalysisReportViewController *contr = (MAExpressAnalysisReportViewController *)m_controller;
// Получаем массив контроллеров представлений данных
NSArray *controllers =[contr dataViewControllers];
// В цикле перебираем контроллеры представления данных
for(NSObject *controller in controllers)
{
    // Проверяем, используется ли текущий контроллер для представления данных в виде таблицы
    if([controller isMemberOfClass:[MAGridDataViewController class]])
    {
        // Получаем объект представления данных в виде таблицы
        MAGridDataViewController *gridController = (MAGridDataViewController *)controller;
        // Получаем источник данных таблицы
        GridDataViewDatasource *grid = [gridController gridDatasource];
        // Проверяем, не является ли источник данных таблицы пустым
        if([grid isEmpty] == NO)
        {
            // Получаем представление контроллера
            UIView *view = [gridController view];
            // Получаем массив вложенных представлений
            NSArray *subviews = [view subviews];
            // Перебираем в цикле вложенные представления
            for(NSObject *subview in subviews)
            {
                // Проверяем, является ли текущее представление табличным представлением
                if([subview isMemberOfClass:[NuGridView class]]) {
                    // Получаем объект табличного представления
                    NuGridView *gridView = (NuGridView *)subview;
                    // Получаем делегат для работы с таблицей
                    MAGridDelegate *delegate = (MAGridDelegate*)[gridView gridDelegate];
                    // Получаем прокси-источник данных
                    MAGridProxyDataSource *proxyDatasource = (MAGridProxyDataSource*)[delegate proxyDataSource];
                    
                    // Определяем настройки условного форматирования для всей таблицы
                    MAConditionalFormattingScale *formatting = [[MAConditionalFormattingScale new] autorelease];
                    [formatting setArea: kCFAEntireTable];
                    // Устанавливаем тип условного форматирования
                    [formatting setType: kCFTSpecificColors];
                    
                    // Получаем шкалу значений для строки
                    ValueScale *scale = [formatting scale];
                    // Получаем стандартную палитру цветов
                    NSArray *defaultPaletteColors = [[SettingsPaletteSelector palettes] objectAtIndex:0];
                    // Устанавливаем значение шкалы
                    [scale setScaleValues: defaultPaletteColors];
                    // Указываем количество значений в шкале
                    [scale setScaleSteps: [defaultPaletteColors count]];
                    // Указываем тип шкалы
                    [scale setScaleType: ValueScaleEqual];
                    
                    // Получаем помощник для работы со стилями в таблице
                    MAStyleHelper *styleHelper = [proxyDatasource styleHelper];
                    // Создаём новый стиль таблицы
                    MAGridCellStyle *cellStyle = [MAGridCellStyle emptyStyle];
                    // Применяем настройки условного форматирования
                    [cellStyle setConditionalFormat: formatting];
                    // Строим индикатор роста по строкам
                    [cellStyle setGrowthIndicatorType: kGITByRows];
                    // Устанавливаем стиль таблицы
                    [styleHelper setGlobalConditionalFormattingStyle: cellStyle];
                }
            }
        }
    }
}

В результате выполнения примера для всей таблицы экспресс-отчёта было применено условное форматирование и отображены индикаторы роста, построенные по строкам. Для раскраски ячеек использовалась палитра, состоящая из жёлтого цвета и оттенков зелёного и красного цветов. Ячейки без данных были окрашены в серый цвет:

Теперь для задания стиля ячеек применим стиль с настройками по умолчанию. Для этого заменим строку кода:

MAGridCellStyle *cellStyle = [MAGridCellStyle emptyStyle];

на следующую строку:

MAGridCellStyle *cellStyle = [MAGridCellStyle defaultStyle];

После выполнения примера ячейки без данных будут окрашены в белый цвет. У всех ячеек, предназначенных для отображения данных, появится граница чёрного цвета:

Далее удалим настройки условного форматирования и тип индикаторов роста, добавив перед строкой:

[styleHelper setGlobalConditionalFormattingStyle: cellStyle];

следующий фрагмент кода:

// Удаляем настройки условного форматирования
[cellStyle removeConditionalFormat];
// Дополнительно:
// Удаляем тип индикатора роста
[cellStyle removeGrowthIndicatorType];

В результате выполнения примера настройки условного форматирования и индикаторы роста в таблице будут удалены:

См. также:

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