Требования к операционной системе: iOS 5.0 и выше.
Мобильное устройство: iPad.
В данном примере описываются некоторые приёмы работы с ячейкой, содержащей флажок. После запуска примера выполняются следующие операции:
отображается представление контроллера для создания меню настроек, содержащего ячейки с заголовками «X», «Y», «Color», «Size»;
устанавливается разрешение или запрет на снятие флажков ячеек;
флажки в ячейках располагаются либо слева, либо справа от заголовков;
устанавливается и возвращается состояние флажков в ячейках.
В базовый пример «Отображение экспресс-отчёта» необходимо добавить следующий файл:
ElementsViewContoller.h/.m. Контроллер для работы с ячейкой, содержащей флажок.
Для выполнения примера необходимо разместить взамен метода executeExample класса ViewController (см. раздел «Отображение экспресс-отчёта») следующий код:
-(void)executeExample {
// Получаем делегат для работы с экспресс-отчётом
MAExpressAnalysisReportViewController *contr = (MAExpressAnalysisReportViewController *)m_controller;
// Создаём контроллер для выбора ячеек
ElementsViewController *elementDSViewCtrl = [[ElementsViewController alloc] initWithDelegate: contr];
// Создаём ячейку с флажком
SettingsCheckmarkedCell *xCell = [[SettingsCheckmarkedCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier:nil];
// Устанавливаем делегат
[xCell setDelegate: elementDSViewCtrl];
// Указываем ключ ячейки
[xCell setKey:@"X_METRIC"];
// Устанавливаем заголовок
[[xCell textLabel] setText: NSLocalizedString(@"X", @"")];
// Флажок располагаем справа
[xCell setRightCheckmark: YES];
// Разрешаем снятие флажка
[xCell setMarkOnly: NO];
// Сымитируем нажатие на флажок через пять секунд
[self performSelector:@selector(tapped:) withObject:xCell afterDelay:5];
SettingsCheckmarkedCell *yCell = [SettingsCheckmarkedCell checkmarkedCellWithTitle:NSLocalizedString(@"Y", @"") delegate:elementDSViewCtrl key:@"Y_METRIC"];
// Разрешаем снятие флажка
[yCell setMarkOnly: NO];
SettingsCheckmarkedCell *colorCell = [SettingsCheckmarkedCell checkmarkedCellWithTitle:NSLocalizedString(@"Color", @"") delegate:elementDSViewCtrl key:@"COLOR_METRIC"];
// Запрещаем снятие флажка
[colorCell setMarkOnly: YES];
SettingsCheckmarkedCell *sizeCell = [SettingsCheckmarkedCell checkmarkedCellWithTitle:NSLocalizedString(@"Size", @"") delegate:elementDSViewCtrl key:@"SIZE_METRIC"];
// Запрещаем снятие флажка
[sizeCell setMarkOnly: YES];
// Добавляем ячейки в контроллер
[elementDSViewCtrl addCell:xCell atRow:0 inSection:0 withSelector:nil];
[elementDSViewCtrl addCell:yCell atRow:1 inSection:0 withSelector:nil];
[elementDSViewCtrl addCell:colorCell atRow:2 inSection:0 withSelector:nil];
[elementDSViewCtrl addCell:sizeCell atRow:3 inSection:0 withSelector:nil];
// Устанавливаем новые значения для ячеек по их ключам
[xCell setChecked: YES];
[elementDSViewCtrl setSettingsBoolValue: NO forKey:@"Y_METRIC"];
[elementDSViewCtrl setSettingsDoubleValue: [[NSNumber numberWithBool: NO] doubleValue] forKey:@"COLOR_METRIC"];
[elementDSViewCtrl setSettingsIntValue:[[NSNumber numberWithBool: YES] intValue] forKey:@"SIZE_METRIC"];
NSLog(@"Состояние элемента X_METRIC: %@", [elementDSViewCtrl settingsValueForKey:@"X_METRIC"]);
NSLog(@"Состояние элемента Y_METRIC: %d", [elementDSViewCtrl settingsBoolValueForKey:@"Y_METRIC"]);
NSLog(@"Состояние элемента COLOR_METRIC: %d", [elementDSViewCtrl settingsIntValueForKey:@"COLOR_METRIC"]);
NSLog(@"Состояние элемента SIZE_METRIC: %f", [elementDSViewCtrl settingsDoubleValueForKey:@"SIZE_METRIC"]);
// Располагаем флажки справа для отметок с ключами X_METRIC и Y_METRIC
[elementDSViewCtrl performSettingsAction:@"X_METRIC" withParameter: [NSNumber numberWithBool: YES]];
[elementDSViewCtrl performSettingsAction:@"Y_METRIC"];
// Располагаем флажки справа для отметок с ключами Y_METRIC и COLOR_METRIC
[elementDSViewCtrl performSettingsAction:@"COLOR_METRIC" withParameter: [NSNumber numberWithBool: NO]];
[elementDSViewCtrl performSettingsAction:@"SIZE_METRIC" withParameter: [NSNumber numberWithBool: NO]];
// Удаляем все дочерние представления окна
NSArray *subviews = [self.view subviews];
for (UIView *subView in subviews) {
[subView removeFromSuperview];
}
// Отображаем представление контроллера для выбора из нескольких элементов
[self.view addSubview: [elementDSViewCtrl view]];
}
// Обрабатывает нажатие на флажок в ячейке меню настроек
- (void)tapped:(NSObject *)object {
SettingsCheckmarkedCell *cell = (SettingsCheckmarkedCell *)object;
// Обрабатываем нажатие на флажок
[cell tapped:nil];
// Оповещаем делегат о смене состояния ячейки
[(ElementsViewController*)[cell delegate] checkStatusChangedInCell:cell];
}
В результате выполнения примера было отображено представление контроллера для создания меню, содержащего ячейки с заголовками «X», «Y», «Color», «Size»:

Флажки для первой и второй ячейки можно устанавливать и снимать, для третьей и четвёртой - только устанавливать. Для ячеек с ключами X_METRIC и Y_METRIC флажки располагаются слева, для ячеек с ключами COLOR_METRIC и SIZE_METRIC - справа.
Флажки для ячеек с ключами X_METRIC и SIZE_METRIC установлены, для остальных ячеек - сняты. В консоли среды разработки были выведены состояния всех ячеек:
Состояние элемента X_METRIC: 1
Состояние элемента Y_METRIC: 0
Состояние элемента COLOR_METRIC: 0
Состояние элемента SIZE_METRIC: 1.000000
Через пять секунд флажок в ячейке с ключом X_METRIC снимается, и в консоли среды разработки выводится текущее состояние данной ячейки.
См. также: