Выделение ячейки, строк, столбцов и области таблицы

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

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

Описание

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

Исходный код

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

-(void) executeExample{
    // Разрешаем выделение ячеек таблицы
    [contr setCanSelect:YES];
    // Разрешаем множественное выделение
    [contr setMultiselect:YES];
};
// Обрабатываем событие нажатия на ячейку таблицы
- (void)gridView:(NuGridView *)gridView wasTouchedInCell:(NuGridCell *)cell {
    // Выводим значение последней нажатой ячейки, если она не является заголовком
    if(![[cell row] isHeader] & ![[cell column] isHeader])
    {
        NSLog(@"%@ %@", @"Значение последней нажатой ячейки:", [[[gridView controller] lastTouchedCell] value]);
        ViewController *delegate = [contr delegate];
        // Получаем объект, предназначенный для работы с таблицей и выводим ширину столбца
        NSInteger columnWidth = [delegate gridView:(NuGridView *)gridView widthForColumn:0];
        NSLog(@"%@ %d", @"Ширина столбца таблицы:", columnWidth);
    }
}
- (void)gridView:(NuGridView *)gridView wasTouchedInRow:(NuGridRow *)row{
    // Выделяем указанные столбцы таблицы, если в ней нет выделенных строк или столбцов
    if([[[gridView controller] selectedColumns] count] == 0
       & [[[gridView controller] selectedRows] count] == 0)
    {
        [[gridView controller] selectColumnByNumber:2];
        [[gridView controller] selectColumnByNumber:0];
        // Выводим количество выделенных столбцов
        NSSet *set = [[gridView controller] selectedColumns];
        NSLog(@"%@ %d",@"Количество выделенных столбцов:", set.count);
        return;
    }
    if([[[gridView controller] selectedRows] count] == 0)
    {   // Снимаем выделение с указанных столбцов
        [[gridView controller] deselectColumnByNumber:0];
        [[gridView controller] deselectColumnByNumber:2];
        // Выделяем указанные строки таблицы, если в ней нет выделенных строк
        [[gridView controller] selectRowByNumber:2];
        [[gridView controller] selectRowByNumber:0];
        // Выводим количество выделенных строк
        NSSet *set = [[gridView controller] selectedRows];
        NSLog(@"%@ %d",@"Количество выделенных строк:", set.count);
        return;
    }
    // Снимаем выделение с указанных строк таблицы
    [[gridView controller] deselectRowByNumber:0];
    [[gridView controller] deselectRowByNumber:2];
    // Выделяем всю область таблицы
    [[gridView controller] selectAll];
}
- (void)gridView:(NuGridView *)gridView wasTouchedInColumn:(NuGridColumn *)column{
    // Очищаем область выделения
    [[gridView controller] clearSelection];
}

Нажмём на любую ячейку таблицы. В результате ячейка будет выделена:

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

Значение последней нажатой ячейки: 4

Ширина столбца таблицы: 80
 

Нажмём на заголовок строки таблицы. В результате данного действия будут выделены 2 столбца таблицы:

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

Количество выделенных столбцов: 2


Нажмём ещё раз на заголовок строки таблицы. После этого будут выделены 2 строки таблицы:

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

Количество выделенных строк: 2


Снова нажмём на заголовок строки таблицы. В результате данного действия будет выделена вся таблица:

Теперь нажмём на заголовок любого столбца таблицы. После этого область выделения таблицы будет очищена.

См. также:

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