Обработка событий таблицы

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

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

Описание

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

Исходный код

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

-(void) executeExample{
    // Устанавливаем возможность выделения таблицы
    [contr setCanSelect: YES];
    // Разрешаем обрабатывать события, связанные с обновлением источника данных
    [contr setSendEventBeforeAndAfterDataSourceUpdate: YES];
};
- (void)gridView:(NuGridView *)gridView wasTouchedInColumn:(NuGridColumn *)column{
    // Выводим сообщение о вызове события
    NSLog(@"%@ %d", @"Выполнено касание к столбцу с номером", [column columnNumber]);
    // Выделяем столбец с номером 2
    [contr selectColumnByNumber: 2];
}
- (void)gridView:(NuGridView *)gridView wasTouchedInRow:(NuGridRow *)row{
    // Получаем источник данных
    ProxyDataSource *dataSource = [contr dataSource];
    // Определяем стиль
    NuGridCellStyle *cellStyle = [NuGridCellStyle deafultStyle];
    // Удаляем изображения, используемые свёрнутым и раскрытым экспандером
    [cellStyle removeExpandedImage];
    [cellStyle removeCollapsedImage];
    [cellStyle setExpanderImageMargin:0];
    // Устанавливаем новый шрифт
    [cellStyle setFont:[UIFont fontWithName:@"Arial" size:15]];
    // Изменяем стиль по умолчанию
    [dataSource gridView:(NuGridView *)[contr gridView] setDefaultStyle:cellStyle];
    // Выводим сообщение о вызове события
    NSLog(@"%@ %d", @"Выполнено касание к строке с номером", [row rowNumber]);
    // Выделяем столбец с номером 2
    [contr selectRowByNumber: 2];
    // Запрещаем обрабатывать события, связанные с обновлением источника данных
    [contr setSendEventBeforeAndAfterDataSourceUpdate: NO];
}
// Обрабатываем событие окончания обновления источника данных
- (void)gridViewActionAfterUpdate:(NuGridView *)gridView{
    // Выводим сообщение о вызове события
    NSLog(@"%@", @"Инициировано событие окончания изменения источника данных");
}
// Обрабатываем событие начала обновления источника данных
- (void)gridViewActionBeforeUpdate:(NuGridView *)gridView{
    // Выводим сообщение о вызове события
    NSLog(@"%@", @"Инициировано событие начала изменения источника данных");
}
// Обрабатываем событие, наступающее перед выделением строки таблицы
- (void)gridView:(NuGridView *)gridView actionBeforeRowWithNumberSelected:(NSInteger)rowNumber{
    NSLog(@"%@ %d", @"Начато выделение строки с номером", rowNumber);
}
// Обрабатываем событие, наступающее перед выделением столбца таблицы
- (void)gridView:(NuGridView *)gridView actionBeforeColumnWithNumberSelected:(NSInteger)columnNumber{
    NSLog(@"%@ %d", @"Начато выделение столбца с номером", columnNumber);
}
// Обрабатываем событие, наступающее после выделения строки таблицы
- (void)gridView:(NuGridView *)gridView actionAfterRowWithNumberSelected:(NSInteger)rowNumber{
    NSLog(@"%@ %d", @"Закончено выделение строки с номером", rowNumber);
}
// Обрабатываем событие, наступающее после выделения столбца таблицы
- (void)gridView:(NuGridView *)gridView actionAfterColumnWithNumberSelected:(NSInteger)columnNumber{
    NSLog(@"%@ %d", @"Закончено выделение столбца с номером", columnNumber);
    // Запрещаем обрабатывать события, связанные с выделением таблицы
    [contr setSendEventBeforeAndAfterSelection:NO];
}

Нажмём на заголовок любой строки таблицы.

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

Также в консоли среды разработки будет выведена информации о вызове обработанных событий:

Инициировано событие начала изменения источника данных

Инициировано событие окончания изменения источника данных

Выполнено касание к строке с номером 0

Начато выделение строки с номером 2

Закончено выделение строки с номером 2
 

Нажмём на заголовок произвольного столбца таблицы.

В результате будет выделен столбец с номером 2:

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

Выполнено касание к столбцу с номером 0

Начато выделение столбца с номером 2

Закончено выделение столбца с номером 2
 

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

См. также:

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