Требования к операционной системе: iOS 5.0 и выше.
Мобильное устройство: iPad.
В данном примере описывается использование изображений для условного форматирования ячеек таблицы. После его запуска выполняются следующие операции:
устанавливается минимальное, среднее и максимальное значения ячеек таблицы;
устанавливаются и удаляются цвета, соответствующие минимальному, среднему и максимальному значениям ячеек;
устанавливается и удаляется коллекция изображений, применяемая для условного форматирования по заданному идентификатору;
устанавливаются и удаляются признаки того, что для условного форматирования строк и столбцов таблицы будут использованы изображения;
устанавливается и удаляется настройка выравнивания изображений относительно границ ячейки;
устанавливается и удаляется настройка расположения изображений относительно текста ячейки;
устанавливается и удаляется метка коллекции изображений, используемых для условного форматирования.
1. Для выполнения примера необходимо разместить в теле метода executeExample класса ViewController (см. раздел «Создание простой электронной таблицы») следующий код:
// Получаем стиль для ячеек таблицы, не являющихся заголовками
NuGridCellStyle *style = [proxyDatasource gridViewGetDefaultStyle:[contr gridView]];
// Разрешаем условное форматирование строк таблицы
[style setRowWithImageCondition:YES];
// Определяем количество строк и столбцов
int rowCount = [datasource gridViewRowCount:[contr gridView]];
int columnCount = [datasource gridViewColumnCount:[contr gridView]];
// Определяем массив значений столбцов
NSMutableArray *valueArray = [[NSMutableArray new] autorelease];
for (int i = 0; i < rowCount; i++) {
for (int j = 0; j < columnCount; j++) {
NSObject *value = [datasource gridView:[contr gridView] valueForCellInRow:i inColumn:j];
[valueArray addObject:value];
}
}
if (valueArray.count > 0) {
// Сортируем значения в массиве
[valueArray sortUsingSelector:@selector(compare:)];
// Определяем минимальное, среднее и максимальное значения
style.minGradValue = [[valueArray objectAtIndex:0] doubleValue];
style.midGradValue = [[valueArray objectAtIndex:valueArray.count / 2] doubleValue];
style.maxGradValue = [[valueArray lastObject] doubleValue];
}
// Определяем коллекцию изображений
NSArray *defaultImages = [[NSArray arrayWithObjects:
[UIImage imageNamed:@"default_arrow_up.png"],
[UIImage imageNamed:@"default_arrow_upright.png"],
[UIImage imageNamed:@"default_arrow_right.png"],
[UIImage imageNamed:@"default_arrow_downright.png"],
[UIImage imageNamed:@"default_arrow_down.png"],
nil] retain];
// Определяем вторую коллекцию изображений
NSArray *bwImages = [[NSArray arrayWithObjects:
[UIImage imageNamed:@"bw_arrow_up.png"],
[UIImage imageNamed:@"bw_arrow_upright.png"],
[UIImage imageNamed:@"bw_arrow_right.png"],
[UIImage imageNamed:@"bw_arrow_downright.png"],
[UIImage imageNamed:@"bw_arrow_down.png"],
nil] retain];
NSMutableDictionary *images = [[[NSMutableDictionary alloc] init] autorelease];
[images setValue:defaultImages forKey:@"default_arrow"];
[images setValue:bwImages forKey:@"bw_arrow"];
// Используем первую коллекцию изображений
[style setCurrentPictureSetID:@"default_arrow"];
// Устанавливаем коллекцию изображений
[style setImageCollection:(NSArray *)[images valueForKey:[style currentPictureSetID]]];
// Определяем выравнивание изображений относительно границ ячейки
[style setImageAlignment:NuImageVerticalAlignmentCenter | NuImageHorizontalAlignmentRight];
// Определяем положение изображений относительно текста ячейки
[style setImageZOrder:NuImageZOrderBack];
В результате выполнения примера для ячеек таблицы было применено условное форматирование с использованием изображений:

2. Взамен свойства CurrentPictureSetID можно использовать свойство ImageSetTag, тогда потребуется фрагмент кода:
// Используем первую коллекцию изображений [style setCurrentPictureSetID:@"default_arrow"]; // Устанавливаем коллекцию изображений [style setImageCollection:(NSArray *)[images valueForKey:[style currentPictureSetID]]];
заменить на следующий:
// Используем первую коллекцию изображений [style setImageSetTag:1]; // Устанавливаем коллекцию изображений [style setImageCollection:(NSArray *)[[images allValues] objectAtIndex:[style imageSetTag]]];
Результат выполнения примера от этого не изменится.
Аналогичным будет результат, если взамен свойства rowWithImageCondition будем использовать свойство ColumnWithImageCondition:
[style setColumnWithImageCondition:YES];
3. Теперь удалим настройки выравнивания изображений, используемых для условного форматирования, относительно границ ячейки:
[style removeImageAlignment];
Таким образом, изображения действительно располагаются под текстом ячейки:

4. Удалим настройку расположения относительно текста для изображений, используемых для условного форматирования:
[style removeImageZOrder];
В результате выполнения примера изображение будет расположено слева от текста:

5. Далее удалим идентификатор коллекции изображений, используемых для условного форматирования, и настройку выравнивания текста:
[style removeCurrentPictureSetID]; [style setImageCollection:(NSArray *)[images valueForKey:[style currentPictureSetID]]]; [style removeTextAlignment];
После выполнения примера изображения, используемые для условного форматирования, отображаться не будут, текст будет расположен по левой границе ячеек:

Аналогичный результат будет получен после удаления коллекции изображений:
[style removeImageCollection];
или признаков того, что для ячеек в строках и столбцах используется условное форматирование:
[style removeRowWithImageCondition]; [style removeColumnWithImageCondition];
6. Удалим метку коллекции изображений, значение которой хранится в свойстве ImageSetTag:
[style removeImageSetTag]; NSLog(@"Значение метки коллекции изображений: %d", [style imageSetTag]);
После выполнения примера в консоли среды разработки будет выведено сообщение о том, что значение метки коллекции изображений равно -1.
См. также: