Требования к операционной системе: 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(@"Настройки из пула для условного форматирования успешно удалены");
}
}
}
}
}
В результате выполнения примера для всей таблицы экспресс-отчёта было применено условное форматирование. Для раскраски ячеек использовалась палитра, состоящая из жёлтого цвета и оттенков зелёного и красного цветов. Ячейки без данных были окрашены в серый цвет:

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