Работа с заголовками таблицы

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

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

Описание

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

Исходный код

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

-(void)executeExample {
    // Получаем левый заголовок таблицы
    SPPLPivotTableHeader leftPivotTableHeader = m_gridPivotTable->leftHeader();
    // Получаем таблицу, которой принадлежит заголовок
    SPPLPivotTable relatedTable = leftPivotTableHeader->relatedTable();
    printf("Количество строк таблицы: %d \n", relatedTable->rowCount());
    /* Получаем левый заголовок объекта, представляющего собой основу
    для построения таблиц с данными */
    SPPLPivotHeader leftPivotHeader = m_gridPivot->leftHeader();
    // Создаём новый объект левого заголовка таблицы
    SPPLPivotTableHeader customLeftPivotTableHeader =
    PPLPivotTableHeader::pivotTableHeader(relatedTable, leftPivotHeader);
    // Получаем массив всех измерений заголовка таблицы
    SNArray leftDimensions = customLeftPivotTableHeader->dimensions();
    if (leftDimensions->count() > 0) {
        printf("Измерения левого заголовка таблицы: \n");
        for (int i = 0; i < leftDimensions->count(); i++) {
            SPPLDimension dimension = leftDimensions->objectAtIndex<PPLDimension>(i);
            printf("%s \n", dimension->name()->UTF8String());
        }
        } else {
        printf("Измерения у левого заголовка таблицы отсутствуют \n");
    }
    printf("Количество элементов левого заголовка: %d \n", customLeftPivotTableHeader->elements()->elementsCount());
    /* Получаем верхний заголовок объекта, представляющего собой основу
    для построения таблиц с данными */
    SPPLPivotHeader topPivotHeader = m_gridPivot->topHeader();
    SPPLPivotTableHeader customTopPivotTableHeader = PPLPivotTableHeader::pivotTableHeader(relatedTable,  [self pivotStateForDimensions: (topPivotHeader->dimensions())], topPivotHeader, false);
    //SPPLPivotTableHeader customTopPivotTableHeader = PPLPivotTableHeader::pivotTableHeader(relatedTable, topPivotHeader);
    // Получаем массив всех измерений заголовка таблицы
    SNArray topDimensions = customTopPivotTableHeader->dimensions();
    if (topDimensions->count() > 0) {
        printf("Измерения верхнего заголовка таблицы: \n");
        for (int i = 0; i < topDimensions->count(); i++) {
            SPPLDimension dimension1 = topDimensions->objectAtIndex<PPLDimension>(i);
            printf("%s \n", dimension1->name()->UTF8String());
        }
        } else {
        printf("Измерения у верхнего заголовка таблицы отсутствуют \n");
    }
    printf("Количество элементов верхнего заголовка: %d", customTopPivotTableHeader->elements()->elementsCount());
}

// Возвращает настройки состояния таблицы для указанных измерений
-(SPPLPivotState) pivotStateForDimensions: (SNArray) dimensions {
    /* Определяем состояние объекта, представляющего собой основу
    для построения таблиц с данными */
    SPPLPivotState pivotState = PPLPivotState::pivotState(m_gridPivot);
    SPPLDimensionSelectionSet selSet = new PPLDimensionSelectionSet();
    for (int i = 0; i < dimensions->count(); ++i) {
        SPPLDimension dimension = dimensions->objectAtIndex<PPLDimension>(i);
        SPPLDimensionSelection selection = new PPLDimensionSelection(dimension);
        selection->selectAll();
        
        selSet->addSelection(selection, dimension->id());
    }
    // Устанавливаем набор отметок измерений
    pivotState->setSelectionSet(selSet);
    return pivotState;
}

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

Количество строк таблицы: 5

Измерения левого заголовка таблицы:

World

Количество элементов левого заголовка: 4

Измерения верхнего заголовка таблицы:

Календарь

Количество элементов верхнего заголовка: 6

См. также:

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