Доступ к строке UISwitch в UITableView - PullRequest
0 голосов
/ 12 июля 2011

Я использовал код, похожий на этот, чтобы добавить переключатели в строки моего TableView.Как только переключатель изменяется, он вызывает switchChanged.Но как мне получить доступ к тому, какой ряд (какой переключатель) был фактически изменен?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
switch( [indexPath row] ) {
    case MY_SWITCH_CELL: {
        UITableViewCell* aCell = [tableView dequeueReusableCellWithIdentifier:@"SwitchCell"];
        if( aCell == nil ) {
            aCell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"SwitchCell"] autorelease];
            aCell.textLabel.text = @"I Have A Switch";
            aCell.selectionStyle = UITableViewCellSelectionStyleNone;
            UISwitch *switchView = [[UISwitch alloc] initWithFrame:CGRectZero];
            aCell.accessoryView = switchView;
            [switchView setOn:NO animated:NO];
            [switchView addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged];
            [switchView release];
        }
        return aCell;
    }
    break;
}
return nil;

}

- (void) switchChanged:(id)sender {
UISwitch* switchControl = sender;
NSLog( @"The switch is %@" switchControl.on ? @"ON" : @"OFF );

}

1 Ответ

2 голосов
/ 12 июля 2011

Объект UITableViewCell, к которому вы добавляете переключатель, будет switchControl.superview, поэтому

UITableViewCell * cell = (UITableViewCell *)switchControl.superview;
NSIndexPath * indexPath = [self.tableView indexPathForCell:cell];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...