Выделение области таблицы

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

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

Описание

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

Исходный код

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

-(void)executeExample {
    // Разрешаем выделение в таблице
    [contr setCanSelect:YES];
    [[contr gridView] setCanSelect:[contr canSelect]];
    // Выделяем область в таблице
    NuGridView *gridView = [contr gridView];
    [contr selectAreaFromRow:[gridView rowWithNumber:1] column:[gridView columnWithNumber:1]
    toRow:[gridView rowWithNumber:2] column:[gridView columnWithNumber:2]];
};
// Вызывается после выделения области в таблице
- (void)gridView:(NuGridView *)gridView areaSelected:(NuGridSelectionArea *)area
{
    // Определяем расположение и размеры метки
    CGRect rect = [area bounds];
    CGPoint position = [area center];
    rect.origin.x = position.x - rect.size.width/2;
    rect.origin.y = position.y - rect.size.height/2;
    // Создаём метку
    [self showViewWithText:@"Область выделена" inRect:rect];
}
-(void)showViewWithText:(NSString*)text inRect:(CGRect)rect {
    UILabel *label = [[UILabel new] autorelease];
    label.textColor = [UIColor redColor];
    [label setText:text];
    // Выравниваем текст по центру
    [label setTextAlignment:NSTextAlignmentCenter];
    [label setFrame: rect];
    // Отображаем метку
    [[contr gridView] addSubview:label];
}
// Удаляет отображаемый элемент
- (void)hideView:(UIView *)view {
    [view removeFromSuperview];
}
// Вызывается перед изменением разметки таблицы
- (void)gridViewActionBeforeLaying:(NuGridView *)gridView {
    if([gridView canSelect]) {
        // Отображаем метку с оповещением о выделении области таблицы
        [self gridView:gridView areaSelected:[gridView selectionArea]];
        [gridView setCanSelect:NO];
    }
}
// Вызывается после изменения разметки таблицы
- (void)gridViewActionAfterLaying:(NuGridView *)gridView {
    for (UIView *view in [gridView subviews]) {
        if([view isKindOfClass:[UILabel class]]) {
            // Скрываем все метки через 3 секунды
            [self performSelector:@selector(hideView:) withObject:view afterDelay:3.0];
        }
    }
}

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

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

См. также:

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