Требования к операционной системе: iOS 5.0 и выше.
Мобильное устройство: iPad.
В данном примере описывается настройка условного форматирования для всей таблицы на основе правила «Значение между A и B».
Для выполнения примера необходимо разместить в теле метода executeExample класса ViewController (см. раздел «Отображение экспресс-отчёта») следующий код:
MAExpressAnalysisReportViewController *contr = (MAExpressAnalysisReportViewController *)m_controller;
// Получаем массив контроллеров представлений данных
NSArray *controllers =[contr dataViewControllers];
// Инициализируем настройки условного форматирования на основе правил
MAConditionalFormattingRules *rules = [[MAConditionalFormattingRules new] autorelease];
// Объявляем помощника для работы с настройками условного форматирования
MAConditionalFormattingHelper *formattingHelper = nil;
// Определяем значения A и B
double valueA = 7000;
double valueB = 8000;
// Перебираем в цикле контроллеры представлений данных
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];
// Создаём правило условного форматирования
MAConditionalFormattingRule *formattingRule = [[MAConditionalFormattingRule new] autorelease];
[formattingRule setValueA: valueA];
[formattingRule setValueB: valueB];
// Устанавливаем цвет заливки для ячеек, удовлетворяющих правилу
[formattingRule setColor: [UIColor colorWithRed:1 green:0.77 blue:0.27 alpha:1]];
// Используем абсолютные числовые значения
[formattingRule setValueFormat: kCFRVFNumber];
// Используем правило «Значение между A и B»
[formattingRule setType: kCFRTBetween];
// Помечаем созданное правило как активное
[formattingRule setActive: YES];
// Получаем правило «Значение между A и B»
MAConditionalFormattingRule *betweenRule = [rules ruleByType: kCFRTBetween];
// Выполняем слияние правил
[betweenRule merge: formattingRule];
// Создаём базового помощника для работы с настройками условного форматирования
formattingHelper = [[MAConditionalFormattingHelper alloc] initWithProxyDataSource: proxyDatasource];
// Применяем настройки условного форматирования для всей таблицы
[formattingHelper applyGlobalConditionalFormat: rules];
}
}
}
}
В результате выполнения примера для всей таблицы экспресс-отчёта было применено условное форматирование с использованием правила «Ячейки между A и B». Так все ячейки, содержащие значения от 7000 до 8000, были окрашены в жёлтый цвет:

Деактивируем применённое правило. Для этого добавим к примеру следующий сценарий:
// Выключаем все правила [rules turnAllInactive]; // Применяем новые настройки условного форматирования [formattingHelper applyGlobalConditionalFormat: rules];
После выполнения примера таблица экспресс-отчёта примет первоначальный вид.
См. также: