Применение условного форматирования для всей таблицы (пример 2)

Требования к операционной системе: 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;
        // Получаем представление контроллера
        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 setUid: 1008];
                // Применяем условное форматирование ко всей таблице
                [formatting setArea: kCFAEntireTable];
                // Устанавливаем тип условного форматирования
                [formatting setType: kCFTSpecificColors];
                
                // Устанавливаем цвет раскраски элементов шкалы, не имеющих данных
                [MAConditionalFormattingScale setNoDataColor:[UIColor grayColor]];
                
                // Создаём шкалу значений
                ValueScale *preparedData = [[ValueScale new] autorelease];
                // Получаем стандартную палитру цветов
                NSArray *defaultPaletteColors= [[SettingsPaletteSelector palettes] objectAtIndex:0];
                // Устанавливаем значение шкалы
                [preparedData setScaleValues: defaultPaletteColors];
                // Указываем количество значений в шкале
                [preparedData setScaleSteps: [defaultPaletteColors count]];
                // Указываем тип шкалы
                [preparedData setScaleType: ValueScaleEqual];
                
                // Создаём пул настроек условного форматирования
                MAConditionalFormattingPool *pool = [[MAConditionalFormattingPool new] autorelease];
                // Добавляем настройки шкалы в пул
                [pool putPreparedData: preparedData forScaleInRow: nil andColumn:nil withArea: [formatting area]];
                
                // Получаем настройки шкалы
                ValueScale *scale = [pool preparedDataForScaleInRow:nil andColumn:nil withArea: [formatting area]];
                // Применяем настройки шкалы для условного форматирования
                [formatting setValue:scale forKey:@"m_scale"];
                
                // Создаём помощника для работы с условным форматированием
                MAConditionalFormattingHelper *formattingHelper = [[MAConditionalFormattingHelper alloc] initWithProxyDataSource: proxyDatasource];
                
                // Создаём объект для работы с условным форматированием
                MAConditionalFormattingScaleLocalHelper *scaleHelper = [[MAConditionalFormattingScaleLocalHelper new] autorelease];
                NSMutableDictionary *settings = [[scaleHelper gridSettingsDictionaryFrom: formatting] mutableCopy];
                [settings setValue: [MAConditionalFormattingScale noDataColor] forKey:@"kGridColorNoData"];
                // Применяем настройки шкалы
                formatting = [scaleHelper setupFromGridSettingsDictionary: settings];
                
                // Применяем настройки условного форматирования
                [formattingHelper applyGlobalConditionalFormat: formatting];
                
                // Удаляем настройки из пула для условного форматирования
                [pool invalidatePool];
                NSMutableDictionary *scalesData = (NSMutableDictionary *)[pool valueForKey: @"scalesData"];
                if ([scalesData count] == 0) {
                     NSLog(@"Настройки из пула для условного форматирования успешно удалены");
                }
            }
        }
    }
}

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

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

См. также:

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