Работа с ячейкой, содержащей флажок

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

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

Описание

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

Необходимые файлы

В базовый пример «Отображение экспресс-отчёта» необходимо добавить следующий файл:

Исходный код

Для выполнения примера необходимо разместить взамен метода 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 снимается, и в консоли среды разработки выводится текущее состояние данной ячейки.

См. также:

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