Настройка подсветки ячеек

Требования к операционной системе: iOS 5.0 и выше.

Мобильное устройство: iPad.

Описание

В данном примере описывается реализация подсветки ячеек. После его запуска выполняются следующие операции:

Исходный код

Для выполнения примера необходимо разместить взамен метода executeExample класса ViewController (см. раздел «Создание простой электронной таблицы») следующий код:

-(void) executeExample {
    // Получаем тему оформления таблицы
    NuGridTheme *theme = [proxyDatasource gridViewTheme:[contr gridView]];
    // Получаем стиль по умолчанию для всех ячеек, кроме заголовков
    NuGridCellStyle *style = [theme defaultStyle];
    // Определяем параметры шрифта текста в подсвеченной ячейке
    [style setHighlightFont:[UIFont fontWithName:@"Courier New" size:20]];
    // Определяем цвет заливки в подсвеченной ячейке
    [style setHighlightBackgroundColor:[UIColor blueColor]];
    // Определяем цвет текста в подсвеченной ячейке
    [style setHighlightTextColor:[UIColor whiteColor]];
};
// Определяет, разрешать ли подсветку ячейки при нажатии на неё
-(BOOL) gridView:(NuGridView *)gridView cellShouldHighlightOnTouchDown:(NuGridCell *)cell {
    if ([cell isRowHeader] | [cell isColumnHeader]) {
        // Снимаем подсветку со всех ячеек таблицы
        return NO;
        } else {
        // Разрешаем подсветку для всех ячеек, не являющихся заголовками
        return YES;
    }
}
// Определяет, разрешать ли подсветку ячейки с экспандером при нажатии на неё
-(BOOL) gridView:(NuGridView *)gridView cellShouldHighlightOnExpanderTouchDown:(NuGridCell *)cell {
    return [self gridView:gridView cellShouldHighlightOnTouchDown:cell];
}
// Обрабатывает двойное касание по ячейке таблицы
- (void)gridView:(NuGridView *)gridView wasDoubleTouchedInCell:(NuGridCell *)cell {
    if ([self gridView:gridView cellShouldHighlightOnExpanderTouchDown:cell]) {
        [cell setIsHighLighted:![cell isHighLighted]];
        if ([cell isHighLighted]) {
            // Закрашиваем фон ячейки соответствующим цветом
            [cell setBackgroundColor:[[cell style] highlightBackgroundColor]];
            } else {
            // Применяем стиль по умолчанию
            NuGridCellStyle *style = [proxyDatasource gridViewGetDefaultStyle:[contr gridView]];
            [cell setBackgroundColor:[style backgroundColor]];
        }
        } else {
        // При выборе заголовков таблицы удаляем подсветку со всех ячеек
        NuGridCellStyle *style = [proxyDatasource gridViewGetDefaultStyle:[contr gridView]];
        [proxyDatasource gridView:[contr gridView] setStyle:style forRow:[cell rowNumber]];
    }
}
// Обрабатывает двойное касание по столбцу таблицы
-(void)gridView:(NuGridView *)gridView wasDoubleTouchedInColumn:(NuGridColumn *)column {
    NSLog(@"Выбрана ячейка в столбце с номером %d", [column columnNumber]);
}
// Обрабатывает двойное касание по строке таблицы
-(void)gridView:(NuGridView *)gridView wasDoubleTouchedInRow:(NuGridRow *)row {
    NSLog(@"Выбрана ячейка в строке с номером %d", [row rowNumber]);
}

В результате выполнения примера для ячеек, не являющихся заголовками, после двойного касания будет установлен шрифт текста «Courier New» с размером 20, заливка синего цвета и белый цвет шрифта:

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

Выбрана ячейка в столбце с номером 1

Выбрана ячейка в строке с номером 1
 

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

Теперь удалим параметры шрифта текста, заливки и цвет текста для всех подсвеченных ячеек таблицы, добавив в метод executeExample следующие строки:

// Удаляем цвет заливки в подсвеченной ячейке
[style removeHighlightBackgroundColor];
// Удаляем параметры шрифта в подсвеченной ячейке
[style removeHighlightFont];
// Удаляем цвет текста в подсвеченной ячейке
[style removeHighlightTextColor];

После выполнения примера установленные настройки для подсвеченных ячеек будут удалены. Теперь ячейка, выбранная двойным касанием, будет иметь фон заливки и текст чёрного цвета:

См. также:

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