Использование изображений для условного форматирования ячеек

Требования к операционной системе: 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.

См. также:

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