Требования к операционной системе: iOS 5.0 и выше.
Мобильное устройство: iPad.
В данном примере описывается настройка условного форматирования для таблицы на основе правила «Значение между A и B». Для определения свойств правила и настроек условного форматирования на основе правил применяются помощники, работающие со всей таблицей.
Для выполнения примера необходимо разместить в теле метода executeExample класса ViewController (см. раздел «Отображение экспресс-отчёта») следующий код:
MAExpressAnalysisReportViewController *contr = (MAExpressAnalysisReportViewController *)m_controller;
// Получаем массив контроллеров представлений данных
NSArray *controllers =[contr dataViewControllers];
// Определяем значения 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];
// Устанавливаем тип правила «Значение между A и B»
[formattingRule setType: kCFRTBetween];
// Для определения свойств правила создаём помощника, работающего со всей таблицей
MAConditionalFormattingRuleGlobalHelper *ruleGlobalHelper = [[MAConditionalFormattingRuleGlobalHelper new] autorelease];
// Получаем настройки правила в виде справочника
NSMutableDictionary *ruleSettings = (NSMutableDictionary*)[ruleGlobalHelper gridSettingsDictionaryFrom: formattingRule];
// Устанавливаем цвет заливки ячеек, удовлетворящих правилу
[ruleSettings setValue: [UIColor colorWithRed:1 green:0.77 blue:0.27 alpha:1] forKey:@"kGridRulesABColor"];
// Помечаем созданное правило как активное
[ruleSettings setValue:[NSNumber numberWithBool: YES] forKey: @"kGridRulesAB"];
// Загружаем настройки правила условного форматирования из справочника
[ruleGlobalHelper setupRule:formattingRule fromGridSettingsDictionary:ruleSettings];
// Инициализируем настройки условного форматирования на основе правил
MAConditionalFormattingRules *rules = [[MAConditionalFormattingRules new] autorelease];
// Получаем правило «Значение между A и B»
MAConditionalFormattingRule *betweenRule = [rules ruleByType: [formattingRule type]];
// Выполняем слияние правил
[betweenRule merge: formattingRule];
/* Для определения настроек условного форматирования на базе правил
создаём помощника, работающего со всей таблицей */
MAConditionalFormattingRulesGlobalHelper *rulesGlobalHelper = [[MAConditionalFormattingRulesGlobalHelper new] autorelease];
// Получаем настройки условного форматирования на основе правил в виде справочника
NSMutableDictionary *rulesSettings = (NSMutableDictionary*)[rulesGlobalHelper gridSettingsDictionaryFrom: rules];
// Устанавливаем значения A и B
[rulesSettings setValue:[NSNumber numberWithDouble: valueA] forKey:@"kGridRulesABValueA"];
[rulesSettings setValue:[NSNumber numberWithDouble: valueB] forKey:@"kGridRulesABValueB"];
// Получаем настройки условного форматирования из справочника
rules = [rulesGlobalHelper setupFromGridSettingsDictionary: rulesSettings];
// Создаём базового помощника для работы с настройками условного форматирования
MAConditionalFormattingHelper *formattingHelper = [[MAConditionalFormattingHelper alloc] initWithProxyDataSource: proxyDatasource];
// Применяем настройки условного форматирования для всей таблицы
[formattingHelper applyGlobalConditionalFormat: rules];
}
}
}
}
В результате выполнения примера для всей таблицы экспресс-отчёта было применено условное форматирование с использованием правила «Ячейки между A и B». Так все ячейки, содержащие значения от 7000 до 8000, были окрашены в жёлтый цвет:

См. также: