Добавьте пользовательский action:@selector к UISwitch на TableViewCell

У меня есть TableCellViewController для руководящих ячеек в моем UITableView. Каждая ячейка имеет маркировку na UISwitch (dictTypeSwitch). Хотение присвоить метод для переключения событий, таким образом, я могу сохранить состояние кнопки.

До сих пор я сделал это:

присвойте функцию setState для возражения:

[cell.dictTypeSwitch addTarget:self action:@selector(setState:) forControlEvents:UIControlEventTouchUpInside];

функция для обработки события:

- (void)setState:(id)sender {
    BOOL state = [sender isOn];
    NSString *rez = state == YES ? @"YES" : @"NO";
    NSLog(rez);
}

От отправителя я получаю объект UISwitch, от которого я могу получить состояние.

До сих пор все в порядке.

Но если я хочу сохранить состояние UISwitch, я должен получить rowIndex для этой ячейки. Как я могу достигнуть этого?

The cells are made inside function cellForRowAtIndexPath. Se the code bellow:

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"DictionariesTableCellViewController";
    DictionariesTableCellViewController *cell = (DictionariesTableCellViewController *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];


        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"DictionariesTableCellViewController" owner:nil options:nil];

        for (id currentObject in topLevelObjects) {
            if ([currentObject isKindOfClass:[UITableViewCell class]]) {
                cell = (DictionariesTableCellViewController *) currentObject;
                break;
            }
        }
    }

    // Configure the cell...

    cell.dictTypeLabel.text = [NSString stringWithFormat:@"row - %i",indexPath.row];
    [cell.dictTypeSwitch addTarget:self action:@selector(setState:) forControlEvents:UIControlEventTouchUpInside];

    return cell;
}

Спасибо

6
задан Borut Tomazin 8 July 2010 в 18:52
поделиться

1 ответ

Вы можете использовать свойство UISwitch .tag для хранения произвольного целого числа. Это может быть установлено на индекс строки.

Если можно найти UITableViewCell из родительского элемента UISwitch, вы можете получить путь индекса с помощью

NSIndexPath* indexPath = [theTableView indexPathForCell:theCell];
4
ответ дан 17 December 2019 в 06:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: