Требования к операционной системе: iOS 5.0 и выше.
Мобильное устройство: iPad.
В данном примере в консоль среды разработки выводятся:
размер и положение выделенной области таблицы;
признак того, является ли область выделения пустой;
признак того, происходит ли изменение области выделения в данный момент;
количество выделенных элементов;
тип области выделения.
Также создается новая выделенная область на основе существующей и изменяется цвет фона её родительской таблицы, отображаются элементы изменения размера области выделения, если они были скрыты или скрываются, если были отображены.
Для выполнения примера необходимо разместить взамен метода executeExample класса ViewController (см. раздел «Создание простой электронной таблицы») следующий код:
-(void) executeExample{
// Разрешаем выделение
[contr setCanSelect:YES];
// Запрещаем изменение выделения при обновлении источника данных
if([contr keepSelectionByIndex] == NO){
[contr setKeepSelectionByIndex:YES];
}
};
// Обрабатываем событие изменения области выделения таблицы
- (void)gridViewSelectionChanged:(NuGridView *)gridView{
// Получаем выделенную область таблицы
NuGridSelectionArea *selectionArea = [gridView selectionArea];
// Получаем объект, предназначенный для работы с выделенной областью таблицы
NuGridController *delegate = [selectionArea delegate];
// Выводим размер и положение выделенной области таблицы
CGFloat frameWidth = [selectionArea originFrame].size.width;
CGFloat frameHeight = [selectionArea originFrame].size.height;
NSLog(@"%@ (%f, %f)", @"Размер выделенной области таблицы:", frameWidth, frameHeight);
CGPoint tPoint = [selectionArea initialTouchPoint];
NSLog(@"%@ (%f, %f)", @"Положение выделенной области таблицы:", [selectionArea actualizedRect].origin.x, [selectionArea actualizedRect].origin.y);
// Выводим признак того, является ли область выделения пустой
NSLog(@"%@ %hhd", @"Область выделения является пустой:", [selectionArea isEmpty]);
// Выводим признак того, происходит ли в данный момент изменение выделенной области
NSLog(@"%@ %hhd", @"В данный момент происходит изменение выделенной области:", [selectionArea selecting]);
// Создаем новую выделенную область на основе существующей
NuGridSelectionArea *newSelArea = [NuGridSelectionArea createSelectionAreaForGrid:gridView withDelegate:delegate];
// Изменяем цвет фона родительской таблицы созданной выделенной области
[[newSelArea parentGrid] setBackgroundColor:[UIColor grayColor]];
// Выводим количество выделенных элементов
NSLog(@"%@ %d", @"Количество выделенных элементов:", [selectionArea elementNumber]);
// Выводим тип области выделения
NSString *selType = @"Тип области выделения: ";
switch ([selectionArea type]) {
case NuAreaTypeNone:
selType = [selType stringByAppendingString:(NSString *)@"область отсутствует"];
break;
case NuAreaTypeRow:
selType = [selType stringByAppendingString:(NSString *)@"выделена строка"];
break;
case NuAreaTypeColumn:
selType = [selType stringByAppendingString:(NSString *)@"выделен столбец"];
break;
}
NSLog(selType);
// Отображаем элементы изменения размера выделения, если они скрыты или скрываем, если они отображены
BOOL isBallonsHidden = [selectionArea valueForKey:@"m_isBallonsHidden"];
if(isBallonsHidden){
[selectionArea showBalloons];
}
else{
[selectionArea hideBalloons];
}
}
Выделим ячейку таблицы, нажав на неё. В результате была выделена ячейка таблицы, были отображены элементы изменения размера области выделения, также был изменен цвет фона таблицы:

Также в консоли среды разработки была выведена информация о выделенной области:
Размер выделенной области таблицы: (80.000000, 50.000000)
Положение выделенной области таблицы: (240.000000, 150.000000)
Область выделения является пустой: 0
В данный момент происходит изменение выделенной области: 0
Количество выделенных элементов: 0
Тип области выделения: область отсутствует
См. также: