Работа с таблицей

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

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

Описание

В данном примере реализована установка для источника данных таблицы нового стиля с измененным шрифтом.

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

Исходный код

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

-(void) executeExample{
    // Получаем таблицу
    NuGridView *gridView = [contr gridView];
    // Получаем объект, предназначенный для работы с таблицей
    ViewController *viewContr = [gridView gridDelegate];
    // Выводим высоту строки таблицы
    NSInteger rHeight = [viewContr gridView:(NuGridView *)gridView heightForRow:0];
    NSLog(@"%@ %d", @"Высота строки таблицы:", rHeight);
    // Определяем стиль
    NuGridCellStyle *cellStyle = [NuGridCellStyle deafultStyle];
    // Удаляем изображения, используемые свёрнутым и раскрытым экспандером
    [cellStyle removeExpandedImage];
    [cellStyle removeCollapsedImage];
    [cellStyle setExpanderImageMargin:0];    
    // Устанавливаем новый шрифт
    [cellStyle setFont:[UIFont fontWithName:@"Arial" size:25]];
    // Получаем источник данных
    ProxyDataSource *dataSource = [gridView dataSource];
    // Изменяем стиль по умолчанию
    [dataSource gridView:(NuGridView *)gridView setDefaultStyle:cellStyle];
    // Обновляем размеры ячеек
    [gridView contentSizeUpdated];
    // Обновляем таблицу
    [gridView dataSourceUpdated];
};
// Обрабатываем событие нажатия на ячейку таблицы
- (void)gridView:(NuGridView *)gridView wasTouchedInCell:(NuGridCell *)cell {
    // Разрешаем выделение ячеек таблицы
    if(![gridView canSelect]){
        [[gridView controller] setCanSelect:YES];
    }
    // Выделяем столбец, в котором находится нажатая ячейка
    [[gridView controller] selectColumnByCell:cell];
    // Получаем область выделения столбца, если он выделен, и выводим ее размеры
    if([[gridView controller] isColumnWithNumberSelected:[cell columnNumber]])
    {
        NuGridSelectionArea *colSelArea = [gridView selectionAreaForColumnNumber:[cell columnNumber]];
        NSLog(@"%@ (%f, %f)", @"Размер области выделения столбца:", [colSelArea originFrame].size.width,
              [colSelArea originFrame].size.height);
        // Снимаем выделение
        [[gridView controller] deselectColumnByCell:cell];
    }
    // Выделяем строку, в которой находится нажатая ячейка
    [[gridView controller] selectRowByCell:cell];
    // Получаем область выделения строки, если она выделена, и выводим ее размеры
    if([[gridView controller] isRowWithNumberSelected:[cell rowNumber]])
    {
        NuGridSelectionArea *rowSelArea = [gridView selectionAreaForRowNumber:[cell rowNumber]];
        NSLog(@"%@ (%f, %f)", @"Размер области выделения строки:", [rowSelArea originFrame].size.width,
              [rowSelArea originFrame].size.height);
        // Снимаем выделение
        [[gridView controller] deselectRowByCell:cell];
    }
    // Запрещаем выделение ячеек таблицы
    [[gridView controller] setCanSelect:NO];
    // Получаем строку и столбец, в которых находится ячейка
    NuGridRow *row = [gridView rowWithNumber:[cell rowNumber]];
    NuGridColumn *col = [gridView columnWithNumber:[cell columnNumber]];
    // Выводим позиции строки и столбца
    NSLog(@"%@ %f",@"Позиция столбца ячейки:", [col xPosition]);
    NSLog(@"%@ %f",@"Позиция строки ячейки:", [row yPosition]);
    // Получаем строку и столбец заголовков ячейки
    NuGridColumn *colHeader = [gridView headerColumnWithNumber: [cell columnNumber]];
    NuGridRow *rowHeader = [gridView headerRowWithNumber: [cell rowNumber]];
    // Выводим позиции строки и столбца заголовка ячейки
    NSLog(@"%@ %f",@"Позиция столбца заголовка ячейки:", [colHeader xPosition]);
    NSLog(@"%@ %f",@"Позиция строки заголовка ячейки:", [rowHeader yPosition]);
    // Получаем ячейку по указанным столбцу и строке и выведем ее значение
    NuTextGridCell *textCell = [gridView cellInRow:[cell rowNumber] column:[cell columnNumber]];
    NSLog(@"%@ %@", @"Значение полученной ячейки:", [textCell value]);
}

В результате будет изменен стиль источника данных таблицы:

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

Высота строки таблицы: 50

Размер области выделения столбца: (80.000000, 250.000000)

Размер области выделения строки: (400.000000, 50.000000)

Позиция столбца ячейки: 373.000000

Позиция строки ячейки: 233.000000

Позиция столбца заголовка ячейки: 212.000000

Позиция строки заголовка ячейки: 132.000000

Значение полученной ячейки: 8

См. также:

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